Java-阶乘

Java-阶乘,java,Java,我正在打印前10个数字的阶乘,所以它是0-9。下面的代码适用于我。但是我无法使循环中的阶乘0也在循环中。任何建议都将不胜感激。多谢各位 public class fact { public static void main(String[] args) { System.out.println("\n\n(f) Loop to print first 10 factorial numbers"); System.out.println("\nFact

我正在打印前10个数字的阶乘,所以它是0-9。下面的代码适用于我。但是我无法使循环中的阶乘0也在循环中。任何建议都将不胜感激。多谢各位

public class fact {

    public static void main(String[] args) { 
        System.out.println("\n\n(f) Loop to print first 10 factorial numbers");

        System.out.println("\nFactorial of 0 is 1");

        int fact = 1; 
        int index = 1; 
        while (index < 10) 

        { 
            fact*=index; 
            System.out.println("Factorial of " + index + " is " + fact); 
            index++; 
        } 
    }
} 
公共类事实{
公共静态void main(字符串[]args){
System.out.println(“\n\n(f)循环以打印前10个阶乘数”);
System.out.println(“\n 0的工厂为1”);
int-fact=1;
int指数=1;
而(指数<10)
{ 
事实*=指数;
System.out.println(““+index+”的阶乘是“+fact”);
索引++;
} 
}
} 

在索引0的
循环中添加
if
条件如何

    int fact = 1; 
    int index = 0; 
    while (index < 10) 

    { 

        if(index == 0)
          System.out.println("\nFactorial of 0 is 1");
        else {
           fact*=index; 
           System.out.println("Factorial of " + index + " is " + fact); 
       }
       index++; 
    } 
int-fact=1;
int指数=0;
而(指数<10)
{ 
如果(索引==0)
System.out.println(“\n 0的工厂为1”);
否则{
事实*=指数;
System.out.println(““+index+”的阶乘是“+fact”);
}
索引++;
} 

0的阶乘是一种特殊情况,因此最好像现在这样在循环外打印它。

您可以这样做

    int fact = 1; 
    int index = 0; 
    while (index < 10) 

    { 
        fact=(index==0)?1:fact*(index);
        System.out.println("Factorial of " + index + " is " + fact); 
        index++; 
    }         
int-fact=1;
int指数=0;
而(指数<10)
{ 
事实=(索引==0)?1:事实*(索引);
System.out.println(““+index+”的阶乘是“+fact”);
索引++;
}         

Fn调用的效率不如循环,但我敢打赌,在这种规模的任务中,它将被优化为~相同。

对于大n个数字,查找阶乘及其数字计数

import java.util.Scanner;
    public class N_Faktorial {
        public static void main(String [] args)
        { 
           int u=1,A[]=new int[9999999];
           Scanner scan =new Scanner(System.in);
           System.out.print("n=");
          int n=scan.nextInt();
          A[1]=1;
        for(int i=1;i<=n;i++) 
        {
           for(int j=1;j<=n;j++) {
                A[j]*=i;
            }           
           for(int j=1;j<=n;j++)
           {
             if(A[j]>9)
              {
              A[j+1]+=A[j]/10;
              A[j]%=10;       
              }
             if(A[u+1]!=0) {
                   u++;
               } 
           }

       }
        System.out.print(n+"! digit count:"+u+"\\n Result: \\n");
         for(int i=u;i>=1;i--)
         {
             System.out.print(A[i]);
         }

        }

    }
import java.util.Scanner;
公共类杂志{
公共静态void main(字符串[]args)
{ 
int u=1,A[]=new int[999999];
扫描仪扫描=新扫描仪(System.in);
系统输出打印(“n=”);
int n=scan.nextInt();
A[1]=1;

对于(int i=1;iyeaaah,无限循环!将
index++
移到if/else之外statement@ZouZou谢谢移动它!为什么不简单地
fact=(index==0)?1:fact*(index)
?ty,修复了。使用Scala几个月后,我一直忘了这些^^^^我想我可以在那里压缩带有累加器的helper,使其尾部递归…在java中没有意义,只是为了外观。
import java.util.Scanner;
    public class N_Faktorial {
        public static void main(String [] args)
        { 
           int u=1,A[]=new int[9999999];
           Scanner scan =new Scanner(System.in);
           System.out.print("n=");
          int n=scan.nextInt();
          A[1]=1;
        for(int i=1;i<=n;i++) 
        {
           for(int j=1;j<=n;j++) {
                A[j]*=i;
            }           
           for(int j=1;j<=n;j++)
           {
             if(A[j]>9)
              {
              A[j+1]+=A[j]/10;
              A[j]%=10;       
              }
             if(A[u+1]!=0) {
                   u++;
               } 
           }

       }
        System.out.print(n+"! digit count:"+u+"\\n Result: \\n");
         for(int i=u;i>=1;i--)
         {
             System.out.print(A[i]);
         }

        }

    }