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

青蛙跳台阶用函数的递归解决

问题

一只青蛙想要跳到第n级台阶(n为非负整数)。它每次只能跳1 级2 级台阶,问这只青蛙跳到第n级台阶共有多少种不同的跳法?

举例

首先我们先从简单的开始分析:

当n=1时;青蛙只有一种跳法:就是跳一级台阶;

当n=2时;青蛙只有两种跳法:1.一次跳一级台阶,共跳两次;2.一次跳两级台阶,共跳一次;

当n=3时;青蛙有三种跳法:1.一次跳一级台阶,共跳三次;2.第一次跳两级台阶第二次跳一级台阶,共跳两次;3.第一次跳一级台阶第二次跳两级台阶,共跳两次;

当n=4时;青蛙有五种跳法:1.一次跳一级台阶,共跳4次;2.第一次跳一级台阶第二次跳两级台阶第三次跳一级台阶,共跳三次;3.第一次跳一级台阶第二次跳一级台阶第三次跳两级台阶,共跳三次;4.第一次跳两级台阶第二次跳一级台阶第三次跳一级台阶;共跳三次;5.第一次跳两级台阶第二次跳两级台阶

......

我们看青蛙共有2种跳跃方式:一级或两级台阶;假设要跳跃的台阶为a级;每次跳跃后以跳跃到的台阶为起点发现剩余跳跃的台阶为a-1或a-2级,按照数学思想,a级的台阶跳跃数的种类为(a-1)与(a-2)的种类数之和。由此我们可以用函数的递归来解决这类问题。

代码验证

#include<stdio.h> int frog(int n) { if(n<=2){return n;} else return frog(n-1)+frog(n-2); } int main() { int a; printf("请输入青蛙要跳跃的台阶数:\n"); scanf("%d",&a); printf("青蛙跳跃%d级台阶共有%d种方法",a,frog(a)); return 0; }

扩展

那如果青蛙可以跳k级台阶呢(k ≤ n,即每次最多跳当前剩余台阶数)?

分析

由原问题分析可得,当k>n时,符合上述问题分析(即可将n级台阶分为k组,n级台阶的跳法=n-1与n-2与...n-k级台阶跳法之和)

代码验证

#include <stdio.h> long long frog(int n, int k) { long long recur(int m) { if (m == 0) { return 1; } long long sum = 0; for (int i = 1; i <= k && i <= m; i++) { sum += recur(m - i); } return sum; } return a(n); } int main() { int n, k; printf("请输入台阶数n(非负整数)和最大跳级k:"); scanf("%d %d", &n, &k); long long res = frog(n, k); printf("跳到第%d级台阶共有%lld种不同跳法\n", n, res) return 0; }

总结

青蛙跳台阶(1~k 级版)的本质是多阶递推的组合问题

  • 递归思路适合理解问题本质,嵌套函数实现符合语法要求,但需记忆化优化性能;
  • 动态规划是工程最优解,兼顾时间 / 空间效率;
  • 核心是抓住 “当前级跳法数 = 所有合法前序级跳法数之和” 的递推关系,同时做好边界过滤和数据类型适配。
http://www.jsqmd.com/news/90241/

相关文章:

  • 智谱AI发布GLM-4.5V开源视觉模型,106B参数刷新多模态技术标杆
  • 人工智能领域重大突破:ERNIE-4.5-300B大模型引领认知智能新高度
  • MarkText个性化配置终极指南:从零开始打造专属写作环境
  • 突破访问限制:ScienceDecrypting一键解锁科学文库PDF
  • Easy-Scraper终极指南:零基础掌握网页数据采集技巧
  • B站视频下载工具的技术架构解析与实践应用
  • ContextMenuManager:终极Windows右键菜单清理与个性化定制解决方案
  • OpenKM 知识管理系统:企业文档管控的终极解决方案
  • 多设备办公新体验:Lan Mouse让一套键鼠掌控全局
  • 胡桃工具箱:原神玩家的终极桌面管理神器
  • KKManager终极指南:简单快速掌握游戏Mod管理技巧
  • 告别视频消失烦恼:MediaGo让你永久保存心仪内容
  • 暗黑破坏神2终极存档编辑:5分钟解决你的游戏痛点
  • 3步搞定Zotero-GPT插件API密钥配置,开启智能文献管理新体验
  • 生物医学数据分析平台完整指南:UKB_RAP从入门到精通
  • 终极邮件查看工具:轻松处理多格式邮件的完整解决方案
  • 腾讯混元开源业界首个13B混合推理MoE模型:80B参数实现13B算力效果,引领大模型高效部署新纪元
  • 如何快速配置BibTeX国标引用:面向中文研究者的完整解决方案
  • 哔哩下载姬DownKyi:打造个人B站视频库的完整指南
  • 文字秒变3D打印文件:腾讯混元3D模型颠覆传统制造流程
  • NotepadNext十六进制编辑功能深度解析:二进制数据处理全攻略
  • GridPlayer多视频播放器:免费开源的多窗口同步播放终极指南
  • Draw.io Mermaid插件终极指南:从零开始掌握文本转图表神器
  • Source Han Serif思源宋体:免费商用开源中文字体深度解析与应用指南
  • OpenKM文档管理系统:企业级部署与配置完全指南
  • 告别B站卡顿:PiliPlus让你的视频体验飞起来
  • 36、Google Sites使用指南:从基础操作到页面管理
  • DownKyi哔哩下载姬:打造个人B站视频资源库的终极指南
  • CTF-NetA流量分析工具终极指南:竞赛神器的高效技巧解析
  • 暗黑破坏神2存档编辑器:终极角色定制与装备管理完整指南