1. ホーム
  2. java

[解決済み] 再帰プリント階乗

2022-02-02 01:58:24

質問

このサイトにあるすべての階乗のリストを検索して読みましたが、私のコードのどこが問題なのかがわかりません。複数の異なる戻り値のメソッドを試しましたが、すべて失敗し続けます。何かいい方法はないでしょうか?

public class RecursivelyPrintFactorial {
    public static void printFactorial(int factCounter, int factValue) {
        int nextCounter = 0;
        int nextValue = 0;

        if (factCounter == 0) // Base case: 0! = 1
            System.out.println("1");
        }
        else if (factCounter == 1) // Base case: print 1 and result
            System.out.println(factCounter + " = " + factValue);
        }
        else { // Recursive case
            System.out.print(factCounter + " * ");
            nextCounter = factCounter - 1;
            nextValue = nextCounter * factValue;
        }

        return factValue * printFactorial(factValue - factCounter);

    }
}

    public static void main (String [] args) {
        int userVal = 0;

        userVal = 5;
        System.out.print(userVal + "! = ");
        printFactorial(userVal, userVal);

    }
}

私は私のリターンの中で間違った数式を持っているような気がしますが、私は私が考えることができるすべての組み合わせを試してみました。そのため、私は気が狂いそうです。どれもこれもエラーになります。何かアイデアはありますか?

解決方法は?

return factValue * printFactorial(factValue - factCounter);

これらの値ではなく、"next"の値を使用する必要があると推測されます。

編集:また、この関数は2つのパラメータを取り、voidであることに注意してください。factValueのvoid倍を返しても意味がない。