-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 数の場合は factorial とその桁数を見つけます。

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
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 に答える
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 に答える