当前位置: 首页 > news >正文

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

代码如下
要求计算最后输出的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;elsereturn 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

http://www.gsyq.cn/news/43314.html

相关文章:

  • 前端框架深度解析:Vue 从入门到实战,掌握渐进式开发核心 - 实践
  • 练习上传
  • 重组蛋白表达技术|HEK293细胞蛋白表达|高效重组蛋白生产服务
  • RK3576在智能工程机械中的应用|三屏八摄AI视觉解决方案
  • 做题笔记23
  • 毒盘未转存仅支持在线观看30s
  • AI元人文:理论自省与客观评估
  • 完整教程:《以 Trae 为桥:高效集成豆包 1.6 API 的实践与思考》
  • 从零开始实现简易版Netty(十) MyNetty 通用编解码器解决TCP黏包/拆包问题
  • 【刷题笔记】AT 经典 90 题
  • CF1758E Tick, Tock
  • javabean和pojo的区别
  • 2025北京一对一辅导/补习/培训/家教/网课推荐榜:金博教育领衔,3家优质机构凭个性化服务出圈,适配多元学习需求
  • Typecho Joe 使用第三方插件开启文章侧边导肮目录 - AutocJS
  • 高级程序语言设计个人作业第四次
  • 什么是 Feed 流?
  • preeee - when
  • 调整 Halo2 Joe 主题友情链接页面样式
  • 基于单片机的元胞自动机仿真系统设计 - 详解
  • (鲜花)万宁五子棋 v0.2
  • 2025年海外仓服务最新推荐企业,欧洲海外仓、美国海外仓、亚马逊海外仓、TEMU海外仓、独立站海外仓服务商解析
  • 实用指南:RSA加密从原理到实践:Java后端与Vue前端全栈案例解析
  • Ubuntu 中创建全局可访问的共用目录
  • 开源 C++ QT QML 开发(十五)通讯--http下载 - 实践
  • 2025年11月不锈钢加工装饰制品优质厂家推荐榜:加工、屏风、栏杆等品类精选
  • JT808,JT1078 —— AAC编码 —— 部标机语音对讲Java实现
  • DP 总结
  • 2025-11-07 早报新闻
  • 低代码开发的核心流程
  • FCN-ResNet18 语义分割完整实现详解