网站首页 全球最实用的IT互联网站!

人工智能P2P分享Wind搜索发布信息网站地图标签大全

当前位置:诺佳网 > 软件工程 > 后端开发 > C语言 >

关于一种计算递归次数题的思路

时间:2025-11-07 22:11

人气:

作者:admin

标签:

导读:代码如下 要求计算最后输出的count的结果 #define _CRT_SECURE_NO_WARNINGS #includelt;stdio.hgt; int count = 0; int fib(int a) { count; if (a == 0) return 1; else if...

代码如下
要求计算最后输出的count的结果

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int count = 0;
int fib(int a)
{
	count++;
	if (a == 0)
		return 1;
	else if (a == 1)
		return 2;
	else
		return fib(a - 1) + fib(a - 2);
}
int main()
{
	fib(10);
	printf("%d", count);
}

当遇到此类检索递归调用次数的题目,我们可以以由简到繁的思路来解决

我们看到,上面的例题直接进行计算是很复杂的,如果从输入的数字10开始解决,一步一步按顺序罗列,最终要计算的数字几乎是天文的(不过也没那么夸张,真硬算也能算)

此时对于这类递归,我们可以倒着来,从简单的数入手

我们可以先计算fib(0),此时显然,主函数的打印结果为1,因为count++;语句只被执行了一次

我们再来计算fib(1),同样count++;语句只被执行了一次

再看fib(2),当输入的值为2,我们执行else后的语句fib(1) + fib(0),神奇的事情发生了,我们发现计算fib(2)的结果正好是fib(1)fib(0)的结果之和再加上1(这里1是首次进入函数时count++的值,也就是执行fib(2)的这次)

那么计算方式就很明确了,我们只需要依次计算下去,很容易就能得到fib(10)输出的count的值

比如fib(3)的count的值就等于fib(2)fib(1)的count值再加一,fib(4)的count的值等于fib(3)的count的值加fib(2)的count的值再加1,以此类推,最后得到结果为177

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信