私はこの方法がすべてm=1
とn=1
までであることを理解しています。 if()
の後に、m=1
とn=1
に問題が発生した場合はどうなりますか?なぜこの再帰的な方法は階乗と見なされますか?
public class exc {
public static void main(String[] args) {
System.out.println(prod(1, 4));
}
public static int prod(int m, int n) {
if (m == n) {
return n;
} else {
int recurse = prod(m, n - 1);
int result = n * recurse; // how n gets its value here?
return result;
}
}
}
再帰の値は何ですか?私は、どのようにしての整数しか得られないのでしょうか?
であれば、プログラムはそこで終了しないので、なぜM = 1およびn = 1戻り値が1である(それは2つの整数を有しているため)?代わりに、 "return result;"の後に終了します。他に?
後m = 1であり、n = 1、nが2(再帰で)。 nは2にどのように設定されていますか?それは2がまだ記憶にあり、扱われなければならなかったからですか?
私はアウトプットを確認するには、それぞれの行の後のprintlnをも使用しますが、それはどちらかの助けにはならなかったthis page
をチェックします。私もデバッガを使いました。
メートル= 1 この例を取るとき、あなたのプログラムは階乗を返す
(メモリから値をバックロード)自身を実行し続けて? – Guy
*が*であるため、これは「要因」とみなされます。あなたが何を求めているのか不明です。 – EJP
[理解再帰](http://stackoverflow.com/questions/717725/understanding-recursion)の可能性の重複とhttp://stackoverflow.com/questions/3021/what-is-recursion-and-when-should- i-use-it – Azodious