用遞迴求斐波那契數
阿新 • • 發佈:2018-11-13
斐波那契數是第一個數和第二個數都為1,從第三個數開始,後面的是是前面相鄰兩個數的和。定義的函式如下所示:
int fib(int m)
{
if (m == 1 || m == 2)
return 1;
else
{
return (fib(m - 1) + fib(m - 2));
}
}
if語句為了確定第一位和第二位都為1,。完整的程式碼如下所示:
#include <stdio.h> #include <stdlib.h> int fib(int m) { if (m == 1 || m == 2) return 1; else { return (fib(m - 1) + fib(m - 2)); } } int main() { int m = 1; int n = 1; int i; int Fib = 1;//定義前兩個數為m,n初值都為1 printf("%8d", m); printf("%8d", n); for (i = 3; i <= 30; i++)//只打印前30個 { Fib = m + n; n = m; m = Fib; printf("%8d", Fib); if (i % 5 == 0) printf("\n"); } printf("\n"); printf("\n"); for (i = 1; i <= 30; i++)//只打印前30個 { printf("%8d", fib(i)); if (i % 5 == 0) printf("\n"); } printf("\n"); system("pause"); return 0; }
在main函式中,用兩種方法列印了斐波那契數,第一種是普通的方法,而第二種呼叫了遞迴函式。
if(i%5==0)
printf("\n");是為了每五位列印一個換行,這樣看起來整齊。