「再帰を理解するには、まず理解しなければなりません 再帰を。」-匿名
再帰関数は、直接的または間接的に、関数やメソッドすることができ、関数内で自分自身を呼び出しています。
どのような仮定は、関数呼び出し自体結果を持っていますか?単に上記の上、それが実装されていたであろう。したがって、各再帰関数は、ベースライン条件、もはや無限の再帰を防止するために再帰呼び出し(停止点)、ある条件を有していなければなりません。
機能(X-){
constのrecursionAnswer =確認( '再帰が何にあなたを理解する?');
IF(recursionAnswer === trueに){
//ベースライン条件、ポイントの停止
trueに復帰し;
}
//再帰呼び出し
A(recursionAnswer);
}
再帰の第1の例として、我々は、数の階乗を計算する方法を見て。数nの階乗は、の積として定義N!、1からnまでの整数を表します。
図5は、!5の階乗を表し、そして5×4×3×2× 1は等しく、結果は120です。(概念定義0!= 1は、0に等しいされていないことに注意してください)
階乗関数(X){ // ベースライン IF(X == 0 || == X 1 ){ リターン 1 ; } // 再帰呼び出しの リターン X *階乗(X- 1 ); }
フィボナッチ数
配列0,1,1,2,3,5,8,13,21、34、等その数。番号1 + 2 1 3 1 + 2から得られた数から得られ、数5 + 2が3から得られた、など。次のようにフィボナッチ数が定義されています。
//反復法
関数fibonacciIterative(N){ 場合(N < 1)戻り 0 ; もし(N <= 2)リターン 1 。 fibNMinus2ましょう = 0を。 fibNMinus1ましょう = 1 ; fibNを聞かせて = N; 以下のために(iは=せて2 ; iが<= N; I ++ ){ // N> = 2 fibN = fibNMinus1 + fibNMinus2。 // F(N-1)+ F(N-2) fibNMinus2 = fibNMinus1。 fibNMinus1 = fibN。 } 戻りfibNと、 }
//再帰的な方法
関数fibona(N){ 場合(N <= 2 ) { リターン 1 。 } 場合(N < 1 ) { 戻り 0 ; } reurn fibona(N - 1)+ fibona(N- 2 ); }