私はプログラミングが初めてで、本に書かれた再帰の例を見ました。'return'でメソッドが終了する場合、この階乗再帰はどのように機能しますか?
return
がメソッド実行を終了する場合、どのように動作しますか?
public class Recursion{
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.print("Type a number -> ");
int n = s.nextInt();
n = factorial(n);
System.out.println("FACTORIAL : " + n);
}
static private int factorial(int n) {
if (n == 0) {
System.out.println("-- REACHED ZERO! " + n);
return 1; // even if the method reach this condition, it doesn't stop the method, but why?
}
System.out.println("N: " + n);
int r = n * factorial(n - 1);
System.out.println("R: " + r); // even with the 'return 1;' line, this will print. But how does that works?
return r;
}
私は、コードを実行すると、予想通りの結果がある:それは最終的な値を返しているので
Type a number -> 5
N: 5
N: 4
N: 3
N: 2
N: 1
-- REACHED ZERO! 0
R: 1
R: 2
R: 6
R: 24
R: 120
FACTORIAL : 120
'int r = n *階乗(n - 1)'。自分自身を呼び出します。それは再帰です。 –
再帰とは、自身を呼び出すメソッドを意味します。簡単な言葉では、自分で双子を雇って、単独で扱うことができる計算を扱う人などです。メソッドが返ってくると、プログラムの全体ではなくメソッドの現在のインスタンスまたは発生が停止されます。それは、最終的に生まれた双子が彼の計算を彼の長老の双子に渡して死ぬことを意味する。 –
詳細については、http://introcs.cs.princeton.edu/java/23recursion/(http://www.fredosaurus.com/JavaBasics/methods/methods-25-calls.html)を参照してください。 )。 –