假設我們需要列印出前 40 位的費氏數列數。
程式如下:
int main()
{
int i;
int a[40];
a[0] = 0;
a[1] = 1;
printf("%d ",a[0]);
printf("%d ",a[1]);
for (i = 2; i < 40; i++)
{
a[i] = a[i-1] + a[i-2];
printf("%d ",a[i]);
}
return 0;
}
程式很簡單,幾乎不用甚麼解釋。
但如果是用遞迴來實現還可以更簡單。
/* 費氏的遞迴函數 */
int Fbi(int i)
{
if(i < 2)
return i == 0 ? 0 : 1;
return Fbi(i-1) + Fbi(i-2);
}
int main()
{
int i;
printf("遞迴顯示費氏數列: \n");
for (i = 0; i < 40; i++)
printf("%d ", Fbi(i));
return 0;
}
換句話說,印出費氏數列除了用迴圈一步步計算,也可以利用自己呼叫自己的遞迴函式來完成,雖然寫起來精簡,但兩者的核心都是靠「前兩項相加」得出結果。
今日的分享就到這囉,我們明天見,掰掰!