这里是关于数字阶乘和的问题
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/

10-11 18:11