需求:打印 Fibonacci數列
思路:
當前項的值等於前兩項數值的和
F=(F-1)+F(F-2)
樣例:
輸入:10
輸出:1 1 2 3 5 8 13 21 34 55
輾轉相加法實現
#include<stdio.h>
int main()
{
int num, f, f1, f2, i;
scanf("%d", &num); //用戶輸入打印的次數
f1 = f2 = 1;
for(i = 1; i <= num; i++) //打印的次數
{
if(i==1 || i==2) //第一項第二項數值都是 1
printf("%d ", f1);
else
{
f = f1+f2;
f1 = f2; // 移動數值
f2 = f;
printf("%d ", f);
}
}
return 0;
}
遞歸實現
#include<stdio.h>
int fibo(int);
int main()
{
int num, i;
scanf("%d", &num);
for(i = 1; i <= num; i++)
printf("%d ", fibo(i));
return 0;
}
int fibo(int n)
{
if(n==1 || n==2)
return 1;
else
return fibo(n-1)+fibo(n-2);
}