n>1,f(n)=f(n-1)+f(n-2);
f(0)=0;
f(1)=1;
求第n個斐波那契數
利用已知的斐波那契數的遞推公式即可
public class fibonacci
public static void main(stringagrs)
}
遞迴法求解過程中,可知存在重複求解相同的函式值的情況,導致效率低下。
故利用乙個陣列儲存函式值,利用空間換取時間
public class fibonacci1
return f[n];
}public static void main(stringagrs)
}
又由於只是需要獲取第n個斐波那契數,而計算f(n)只需要f(n-1)和f(n-2)的值,可利用last以及nexttolast來儲存f(n-1)和f(n-2)的值,並不需要整個陣列來儲存所有的斐波那契數
getfib(int n )**可更改為:
public static int getfib(int n)
int last=1;
int nexttolast=1;
int answer=1;
for(int i=2;i<=n;i++)
return answer;
}
求出第N個斐波那契數
一 知識普及 神魔是斐波那契數列 斐波那契數列 fibonacci sequence 又稱 分割 數列 因數學家列昂納多 斐波那契 leonardoda fibonacci 以兔子繁殖為例子而引入,故又稱為 兔子數列 指的是這樣乙個數列 1 1 2 3 5 8 13 21 34 在數學上,斐波納契數...
求第n個斐波那契數
斐波那契數指 1 1 2 3 5 8 13 21.前兩個數是1 1,從第3個數開始該數等於前兩個數之和。1.用遞迴的方法求第n個斐波那契數 但我們發現有問題,當就算第45個斐波那契數時,特別耗費時間,許久沒有結果。這是為什麼呢?我們發現fib函式在呼叫過程中有很多重複的計算,如當計算fib 35 時...
求第n個斐波那契數。(不考慮溢位)
較為粗暴的解法 斐波那契數列1 1 2 3 5 8 13 21 前兩個數之和等於第三個數 但是我們發現有問題 在使用 fib 這個函式的時候如果我們要計算第50個斐波那契數字的時候特別耗費時間。使用 factorial 函式求10000的階乘 不考慮結果的正確性 程式會崩潰。我們發現 fib 函式在...