斐波那契數列:1、1、2、3、5、8、13、21、34、……
函數:
使用公式f[n]=f[n-1]+f[n-2],依次遞歸計算,遞歸結束條件是f[1]=1,f[2]=1。
for循環:
從底層向上運算,
a(0)+a(1)->a(1) //第0個數字+第1個數字=第2個數字
a(1)+a(1)->a(2) //第1個數字+第2個數字=第3個數字
a(2)+a(3)->a(5) //第2個數字+第3個數字=第4個數字
······
a(n-1)+a(n-2)->a(n)
因此,在循環中只要定義三個變量,便能將最后的f(n)求出來
function fn(n){ if(n==1|n==2){ return 1;} //因為斐波那契數列格式為:1、1、2、3、5、8、13、21、34、......,n=1和n=2的時候都是輸出1
return fn(n-1)+fn(n-2); //不斷調用自身函數,n-1是穿進去的參數的前一次,就是最后n的前一個數字。所以n-2是最后傳入參數的前兩個數字。
} //用函數寫出斐波那契數列
var n=parseInt(prompt('請輸入一個數字')); var a1=1; var a2=1; var a3=0; for(var i=2;i<=n;i++){//因為前兩個數都是1,所以要從i=2開始,就是前兩個數的1+1=2,i的初始值其實是第三個數
a3=a1+a2;//第三個數等於第一個數加上第二個數
a1=a2;//第一個數就變成了之前的第二個數
a2=a3;//第二個數就變成了剛剛的第三個數
} console.log(a3); //使用for循環寫出斐波那契數列