JavaScript再帰関数はフィボナッチ数列、黄金分割数列を実現し、再帰的定義と用法の実例分析を行います.
7410 ワード
再帰する
再帰関数とは、関数内でこの関数を呼び出します.再帰関数の使用には注意が必要です.不適切な処理は死のサイクルに入ります.死のサイクルに入らないように、再帰関数を書くには、まず終了条件(循環を終了するために)再帰関数を書きます.次のコードは死再帰の例です.
以下に簡単な再帰要求を実現します.1+2+3+++100の和を実現します.
フィボナッチSequenceの第N項を計算します.フィボナッチ数列とも言われています.ゴールド分割数列とも言われています.数学者レオナルド・フィボナッチがウサギの繁殖を例に導入したので、「ウサギの数列」とも言われています.このような数列を指します.フィボナッチの数列は、F(1)=1、F(2)=1、F(n)=F(n−1)+F(n−2)(n≧3)という方法で定義されています.
再帰関数とは、関数内でこの関数を呼び出します.再帰関数の使用には注意が必要です.不適切な処理は死のサイクルに入ります.死のサイクルに入らないように、再帰関数を書くには、まず終了条件(循環を終了するために)再帰関数を書きます.次のコードは死再帰の例です.
function fn(){
console.log(1)
fn()
}
関数fn()を呼び出すと、fnのコードを実行しても、終了の条件がない場合は、常に自身を呼び出して、無限の実行を行います.これを死再帰といいます.以下に簡単な再帰要求を実現します.1+2+3+++100の和を実現します.
function sum(n){
if(n==1){ //n==1
// n==1 ,
return 1
}else{
return sum(n-1) + n // n==4 ,
// sum(4) = 4+ sum(3); sum(3) = 3+sum(2);
// sum(2) = 2 + sum(1)
// sum(n) = n + sum(n-1)
}
}
sum(100) 5050
以下のn+…100を実現するためには、ジャンプサイクルの条件n=100を見つけるだけで100に戻ります.
```javascript
function sum(n){
if(n==100){ //n==100
// n==100 ,
return 100
}else{
return sum(n+1) + n // n==97 ,
// sum(97) = 97+ sum(98);
//sum(98) =98+sum(99);
// sum(99) =99+sum(100)
// sum(n) = n + sum(n+1)
}
}
関数sum(100)を呼び出して出力した結果、これはもちろんのこと、コール関数sum(97)の出力結果は394だった. 1 100
```javascript
function fn(n){
if(n==1){
return 1
}else{
return fn(n-1) *n
}
}
次は一つの関数でnから100までの階乗を実現します.function fn(n){
if(n==100){
return 100
}else{
return fn(n+1) *n
}
}
nからmまでの階乗を実現するには、交換条件n=mを提示するだけで実現できます.フィボナッチSequenceの第N項を計算します.フィボナッチ数列とも言われています.ゴールド分割数列とも言われています.数学者レオナルド・フィボナッチがウサギの繁殖を例に導入したので、「ウサギの数列」とも言われています.このような数列を指します.フィボナッチの数列は、F(1)=1、F(2)=1、F(n)=F(n−1)+F(n−2)(n≧3)という方法で定義されています.
function fn(n){
if(n==1||n==2){
return 1
}else{
return fn(n-2) + fn(n-1)
}
}
まとめ:1.まず、サイクル終了の条件として臨界値を探します.つまり、計算によって得られる値ではないです.2.今回と前回の関係を探します.3.現在の関数はもう使えます.例えば、1+2+3++100の和sum(100)=sum(99)+100を実現します.sum(n)=sum(n-1)+nは、returnsum(n-1)+nとなります.