繰り返しますが、私はまだ再帰を扱っています。基本ケースの 1 つに関して質問があります。
UPD: a と b はシーケンスの最初の数字を表し、n は計算される合計の目的の位置です。
私のコードは次のとおりです。
public static int fib(int a, int b, int n) {
if (n <=1) {
return a;
} else if (n == 2) {
return b;
} else {
return (fib(a, b, n - 1) + fib(a, b, n - 2));
}
}
2 行目では、手動でプログラムをトレースする前に、「n<=0」のままにしました。ただし、プログラムをトレースして実行すると、差分の回答が得られました。問題は、ある時点で n will = to 1 でした。そのため、最初の基本ケースを n<=1 に変更し、同じ答えを得ました。
ここで問題は、メソッドを次のように呼び出したとします: fib(2,3,6) 答えは = 21 (with line 2 = " n<=1") であるはずですが、行 2 が "n<=0" の場合答えは27でした。
行 2 で "n<=0" が与えられた場合、最終的に n = 1 の場合、プログラムに何が起こるか知りたい