我在查了資料之後找到以下解決方法:
#include
int main()
{
long fib[41] = {0,1};
int i;
for (i=2;i<41;i++) fib[i] = fib[i-1]+fib[i-2];
for (i=1;i<41;i++) printf("F%d==%d\n",i,fib[i]);
getch();
return 0;
}
有些看不懂,希望可以幫我詳細分析一下運算過程,或者提供相關的知識點以供研究。
謝謝。
首先你要知道斐波那契數列的規律也就是0、1、1、2、3、5、8、13、21、……,通過這個就可以知道從第三個元素開始,他的值等於前面兩個元素的和,下面分析代碼
long fib[41] = {0,1}; 定義了一個數組,設置了0 1 坐標元素的值為 0 1
for (i=2;i<41;i++) fib[i] = fib[i-1]+fib[i-2]; 這個循環是沖i等於2開始運算的,也就是數組的第三個元素,fib[i] = fib[i-1]+fib[i-2] 因為斐波那契數列的規律是從第三個元素開始等於前面兩個相加,也就是fib[i-1],fib[i-2]這兩個
for (i=1;i<41;i++) printf("F%d==%d\n",i,fib[i]); 這裡是打印,上面的代碼可以看出,數組第一個和第二個元素沒有參與運算,但long fib[41] = {0,1};這裡已經聲明了,所以第一個第二個元素固定為0、1,第三個開始就是前面兩個相加。
不知道說的詳細不詳細,你明白不明白。