/*
斐波拉契數列,求數列的第N個數的值,並求前N個數的和
1 1 2 3 5 8 13 21 34
*/
# include <stdio.h>
int main(void)
{
int n;
int f1,f2,f3;
int i;
int sum =0;
1=1;
f2=1;
printf("請輸入您需要求的項的數:");
scanf("%d",&n);
if(n==1)
{
f3=1;
sum =1;
}
else if(n==2)
{
f3=1;
sum=2;
}
else
{
for(i=3;i<=n;i++)
{
f3=f1+f2;
f1=f2;
f2=f3;
sum=f3+sum+2;
}
}
printf("%d/n",f3);
printf("%d/n",sum);
return 0;
}
另外一種寫法:
遞歸算法求斐波拉契數列前n項的和
#include <stdio.h>
long f(int n)
{if(n==1) return 1;
if(n==2)return 2;
return f(n-1)+fib(n-2);
}
long fsum(int n)
{ if(n==1) return fib(n);
return f(n)+fsum(n-1);
}