0
私はPHPを使用してフィボナッチシーケンスで遊んでいます。私は再帰関数の概念を理解していますが、ここで何が起こっているのか分かりません。コードフィボナッチシーケンスリターン
:入力は1を返します1よりも小さい場合
n is 3
n is 2
n is 1
2 when n is 1
1 when n is 2
n is 1
2 when n is 1
0 when n is 3
私はPHPを使用してフィボナッチシーケンスで遊んでいます。私は再帰関数の概念を理解していますが、ここで何が起こっているのか分かりません。コードフィボナッチシーケンスリターン
:入力は1を返します1よりも小さい場合
n is 3
n is 2
n is 1
2 when n is 1
1 when n is 2
n is 1
2 when n is 1
0 when n is 3
あなたfunction
、それ以外の場合は、入力の値を印刷します:ここ
function fs($n) {
if ($n < 1) {
return 1;
} // if
echo " n is " . $n . "<br>";
echo fs($n - 1) + fs($n - 2) . " when n is " . $n . "<br>";
} // function
echo fs(3);
とリターンですより低い値のために関数を再帰的に呼び出します。 -1の場合は1が返されるため、間違った値が返されます。それを1で呼びましょう。それは0と-1のためにそれを呼び出すでしょう、それぞれのために1を返し、それらを追加します、結果は2です。これは間違っています。別の方法で実装する必要があります。
function fs($n){
if ($n<=1) {
return 1;
}
echo fs($n-1)+fs($n-2) ." when n is ".$n. "<br>";
} //function
fs(3);
これで問題は解決します。
あなたは正確に何を理解していませんか?あなたが持っているものは、フィボナッチ数を計算する関数です。フィボナッチ数列を理解していないのですか、あるいはその出力を理解できませんか? – Pavlin
私はフィボナッチを理解していますが、出力を理解していません。 "n is 3"、 "n is 2"、 "n is 1" - なぜ次の出力は "nが1のとき2"ですか?私が理解していないコードの実行順序です。前もって感謝します – MadeCurler