斐波那契数列前n项和问题
如果数列的前前两项不为1,而是a1和a2,那应该怎么设计这个函数呢?
#include"stdio.h"
int fb(int a1,int a2,int n);
int main()
{
int a,b,n,s;
scanf("%d%d%d",&a,&b,&n);
s=fb(a,b,n);
printf("%d\n",s);
}
int fb(int a1,int a2,int n);
{
}
如果数列的前前两项不为1,而是a1和a2,那应该怎么设计这个函数呢?
#include"stdio.h"
int fb(int a1,int a2,int n);
int main()
{
int a,b,n,s;
scanf("%d%d%d",&a,&b,&n);
s=fb(a,b,n);
printf("%d\n",s);
}
int fb(int a1,int a2,int n);
{
}
非递归实现:
int fb(int a1,int a2,int n);
{
int a[10000],s,i;
a[0]=a1;
a[1]=a2;
s=a[0]+a[1];
for(i=2;i<n;i++){
a[i]=a[i-1]+a[i-2];
s+=a[i];
}
return s;
}
递归实现:
#include"stdio.h"
int fb(int a1,int a2,int s,int n);
int main()
{
int a,b,n,s;
scanf("%d%d%d",&a,&b,&n);
s=fb(a,b,a+b,n);
printf("%d\n",s);
}
int fb(int a1,int a2,int s,int n){
int t=a1+a2;
if(n==2) return s;
s=t+fb(a2,t,s,n-1);
return s;
}