首先介绍一下斐波那契数列:1、1、2、3、5、8、13、21、34、55……
在数学上,斐波那契数列以递推的方法定义:F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)
代码的实现:
//斐波那契数列
int fibonacci(int n){
//返回数列第n项,当n>2时,递归利用递推关系算出第n项
return (n==1||n==2)?1:fibonacci(n-1)+fibonacci(n-2);
}
int main(){
int n,fn;
while(1){
int sum = 0;
printf("输入项数/(q->exit):");
scanf("%d",&n);
if(getchar()=='q')
break;
for(int i = 1;i <= n;i++){
fn = fibonacci(i);
sum += fn; //不建议求和项数太多,因为数列越往后数值会变得非常大,求和会容易溢出(参考下图的代码测试)
printf("%d ",fn);
}
printf("\n前%d项和 = %d\n",n,sum);
}
return 0;
}
Ubuntu20.04编译运行测试: