这里是关于数字阶乘之和的问题
http://projecteuler.net/index.php?section=problems&id=254
这里还有将 sf(n) 定义为 f(n) 的数字之和。所以 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 或您使用它的方式有关。
您是否在 Debug模式下运行它?你设置断点了吗?
如果您创建一个新项目并将代码复制到其中会发生什么?
下面的程序能运行吗?
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/