1. 程式人生 > >C primer plus 第六版 第九章 第十一題 程式設計練習答案

C primer plus 第六版 第九章 第十一題 程式設計練習答案

/*
    本程式應 習題-11 建立。
題目要求: 編寫並測試 Fibonacci() 函式, 該函式用迴圈代替遞迴計算斐波那契數。
*/
#include<stdio.h>

#define true 1

void Fibonacci(void);

int main(void)
{
// 懶得寫太多了。直接在子函式用迴圈代替遞迴,來寫 斐波那契數。

Fibonacci();

getchar();

printf("Bye !\n");

return 0;
}

void Fibonacci(void)
{
// 斐波那契數列以如下被以遞迴的方法定義:
// F(0) = 0,F(1) = 1, F(n) = F(n - 1) + F(n - 2)(n >= 2,n∈N*)
// !! 注 : n 為第 n 項, n - 1 為上一項。


int i = 0;     // 迴圈用。

int F[50] = { 0 };   // 存斐波那契數列儲

for ( i = 0; i < 30; i++)
{
if (i == 0)
{
F[0] = 0;
printf("第%d次 %d     ",i,F[i]);
}
else if (i == 1)
{
F[1] = 1;
printf("第%d次 %d     ", i,F[i]);
}
else
{
F[i] = F[i - 1] + F[i - 2];
printf("第%d次 %d     ", i,F[i]);
}
}

// 之所以用 return; 是因為 void 類函式每次return 0 都警告預設 int 型返回值。
return;
}