0

7 階乗の値を計算して答えを表示しようとしていますが、これを行う方法を調べようとすると、最初にユーザーから数値を入力し、次に数値を入力する必要があるように記述されたコードを見つけ続けました。ユーザーが入力した数値を因数分解します。しかし、明らかに、必要な数値はすでにわかっているため、コードは異なるものになり、これを行う方法を理解するのに苦労しています。

最初はこれでやってみた

public class Ch4_Lab_7 
{
    public static void main(String[] args)
    {
        int factorial = 7;
        while (factorial <= 7)
        {
        if (factorial > 0)
        System.out.println(factorial*facto… 
        factorial--;
        }
    }
}

しかし、7*7、次に 6*6、次に 5*5 などを表示するだけで、これは私がやろうとしていることではありません。誰かがそれを正しく行う方法を知っていますか?

4

6 に答える 6

5
import java.util.Scanner;

public class factorial {
    public static void main (String[] args) {
        Scanner input = new Scanner(System.in);
        //Gives Prompt
        System.out.print("Enter a number to find the factorial of it");
        //Enter the times you want to run
        int number = input.nextInt();
        //Declares new int    
        int factor = 1;
        //Runs loop and multiplies factor each time runned     
        for (int i=1; i<=number; i++) {
            factor = factor*i;
        }
        //Prints out final number
        System.out.println(factor);
    }
}

入力した数に達するまで、掛け続けてください。次に、印刷します。

入力:5 出力:120

入力:7 出力:5040

于 2013-09-20T00:47:28.717 に答える
1

階乗計算用とカウンター用の 2 つの変数が必要です。これを試してください、私はそれをテストしていませんが、動作するはずです:

public static void main(String[] args)
    {
        int input = 7;
        int factorial = 1;
        while (input > 0)
        {
          factorial = factorial * input
          input--;
        }
        System.out.println("Factorial = " + factorial);
    }
于 2013-09-20T00:46:22.927 に答える
1
int a=7, fact=1, b=1;
do
{
    fact=fact*b;//fact has the value 1  as constant and fact into b will be save in fact to multiply again. 
    System.out.print(fact);
    b++;
}
while(a>=b); // a is greater and equals tob.
于 2014-02-24T14:18:01.270 に答える
0
public class Factorial {

public static void main(String[] args) {
    int result = factorial(5); //this is where we do 5!, to test.
    System.out.println(result);

}

public static int factorial(int n) {
    int x = 1;
    int y = 1;
    for (int i = 1; i <= n; i++) {

        y = x * i;
        x = y;

    }
    return y;
}

}

/*so, for 3! for example, we have:
i=1:
y = x * i, where x = 1, so that means:
y = 1*1 ; y= 1; x = y so x = 1. Then i increments =>
i = 2:
y = x * i. x is 1 and i is 2, so we have y = 2. Next step in code: x=y, means x = 2. Then i increments =>
i = 3:
y = x *i so we have y = 2*3. y=6. */
于 2015-04-27T20:50:40.040 に答える
0

第 1 の理由: 見たメソッドはおそらく再帰的であり、編集したようです。

2番目:階乗の一時的な結果をどこにも保存していません。

これを試して

//number->n for n!
int number = 7;
//We'll store here the result of n!
int result = 1;
//we start from 7 and count backwards until 1
while (number > 0) {
    //Multiply result and current number, and update result
    result = number*result;
    //Update the number, counting backwards here
    number--;
}
//Print result in Screen
System.out.println(result);
于 2013-09-20T00:48:10.617 に答える