JS:遞歸基礎及範例——斐波那契數列 、 楊輝三角
阿新 • • 發佈:2017-10-13
求解 調用 size spa 黃金分割 span 簡單 斐波那契數 數字
function sl(var i){
if(i<=2){
return 1;
} else{
return sl(i-1)+sl(i-2); }
} </script> 例2:楊輝三角
// 1
// 1 1
// 1 2 1 //第n行第m個數:n=3,m=2時,數字為2;
// 1 3 3 1
// 1 4 6 4 1
// ...... //求第n行第m個數
<script>
function yhsj(n,m){
if(m>n){
return false;
} else {
if(m==1 || m==n){
return 1;
} else {
return yhsj(n-1,m) + yhsj(n-1,m-1);
}
}
} </script>
定義:程序調用自身的編程技巧稱為遞歸。一個過程或函數在其定義或說明中有直接或間接調用自身的一種方法,它通常把一個大型復雜的問題層層轉化為一個與原問題相似的規模較小的問題來求解,遞歸策略只需少量的程序就可描述出解題過程所需要的多次重復計算,大大地減少了程序的代碼量。
一般應用於不是清晰級別的結構名調用上。
構成遞歸需具備的條件: 1. 子問題須與原始問題為同樣的事,且更為簡單; 2. 不能無限制地調用本身,須有個出口,化簡為非遞歸狀況處理。 例1:斐波那契數列 //斐波那契數列,又稱黃金分割數列,指的是這樣一個數列: //1、1、2、3、5、8、13、21、…… //求第i個數 <script>if(i<=2){
return 1;
} else{
return sl(i-1)+sl(i-2); }
} </script> 例2:楊輝三角
// 1
// 1 1
// 1 2 1 //第n行第m個數:n=3,m=2時,數字為2;
// 1 3 3 1
// 1 4 6 4 1
// ...... //求第n行第m個數
<script>
function yhsj(n,m){
if(m>n){
return false;
} else {
if(m==1 || m==n){
return 1;
} else {
return yhsj(n-1,m) + yhsj(n-1,m-1);
}
}
} </script>
JS:遞歸基礎及範例——斐波那契數列 、 楊輝三角