题目:
用递归方法编程计算输出Fibonacci数列,同时打印出计算Fibonacci数列每一项时所需的递归调用次数。
**输入格式要求:"%d" 提示信息:“Input n:”
**输出格式要求:“Fib(%d)=%d, count=%dn”
所谓Fibonacci数列,这个数列从第3项开始,每一项都等于前两项之和。
#include <stdio.h>
#include <stdlib.h>
static count =1;//**我没有看懂这里static的意思是什么,为什么可以同时出现在函数和主函数中;**
int fib(int n)
{if(n==1 || n==2)//fib()函数的前两项;{count=count+2;//**我再次没看懂为什么是加2**return 1;}else{return fib(n-1)+fib(n-2);//输出fib(n);}
}
int main()
{int i,n;printf("Input n:");scanf("%d",&n);for(i=1; i<=n; i++){printf("Fib(%d)=%d, count=%dn",i,fib(i),count);}return 0;
}
运行结果
Input n:10
Fib(1)=1, count=1
Fib(2)=1, count=3
Fib(3)=2, count=5
Fib(4)=3, count=9
Fib(5)=5, count=15
Fib(6)=8, count=25
Fib(7)=13, count=41
Fib(8)=21, count=67
Fib(9)=34, count=109
Fib(10)=55, count=177
新人表示一脸懵逼,我知道怎么求fib(n)但是**没法理解这个递归次数是怎么计数的。**加粗样式
本文发布于:2024-01-28 21:56:16,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170645018110555.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |