-4

我正在打印前 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++; 
        } 
    }
} 
4

5 回答 5

1

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

    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++; 
    } 
于 2013-11-05T11:03:31.903 回答
1

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

于 2013-11-05T11:04:13.160 回答
1

对于大 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]);
         }

        }

    }
于 2015-12-14T14:54:37.957 回答
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++; 
    }         
于 2013-11-05T11:08:50.710 回答
0
factorialList(10);

public static int factorialList(int indexMax) {
    int fact = 1;
    if (indexMax > 0) fact = indexMax * factorialList(indexMax - 1);
    System.out.println("Factorial of " + indexMax + " is " + fact);
    return fact;
}

Fn 调用不如循环有效,但我敢打赌它会被优化到 ~ 在这种大小的任务上相同。

于 2013-11-05T11:12:15.943 回答