这里是关于数字阶乘和的问题
http://projecteuler.net/index.php?section=problems&id=254
这里还有Define sf(n) as the sum of the digits of f(n). So sf(342) = 3 + 2 = 5.
下面的代码将32作为数字的阶乘和打印出来,但它不显示第二个结果
import java.util.*;
public class fact_of_digit1 {
public static int fact(int a){
if (a==0) return 1;
return a*fact(a-1);
}
public static int factorialofdigit(int a){
int sum=0;
int t=0;
while (a!=0){
t= a%10;
a/=10;
sum+=fact(t);
}
return sum;
}
public static void main(String[] args) {
Scanner scnr=new Scanner (System.in);
System.out.println("enter a:");
int a=scnr.nextInt();
System.out.println(factorialofdigit(a));
System.out.println(sfn(a));
}
public static int sfn(int a){
int sum1=0;
int t=factorialofdigit(a);
while (t!=0){
sum1+=t%10;
t/=10;
}
return sum1;
}
}
结果是:
enter a:
342
32
BUILD SUCCESSFUL (total time: 3 seconds)
最佳答案
代码看起来很好,在这里也可以工作,所以它可能与ide或您使用它的方式有关。
你在运行调试模式吗?你设置了断点吗?
如果创建一个新项目并将代码复制到其中,会发生什么情况?
下列程序有效吗?
import java.util.*;
public class fact_of_digit1 {
public static void main(String[] args) {
Scanner scnr=new Scanner (System.in);
System.out.println("enter a:");
int a=scnr.nextInt();
System.out.println(5);
System.out.println(3);
}
}
将扫描仪替换为“int a=342”。
在末尾添加一个额外的println语句。
关于java - 欧拉项目数字的阶乘和,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3174830/