news 2026/7/21 9:51:18

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
青蛙跳台阶用函数的递归解决

问题

一只青蛙想要跳到第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 级版)的本质是多阶递推的组合问题

  • 递归思路适合理解问题本质,嵌套函数实现符合语法要求,但需记忆化优化性能;
  • 动态规划是工程最优解,兼顾时间 / 空间效率;
  • 核心是抓住 “当前级跳法数 = 所有合法前序级跳法数之和” 的递推关系,同时做好边界过滤和数据类型适配。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/17 10:41:15

智谱AI发布GLM-4.5V开源视觉模型,106B参数刷新多模态技术标杆

智谱AI发布GLM-4.5V开源视觉模型&#xff0c;106B参数刷新多模态技术标杆 【免费下载链接】GLM-4.5V 项目地址: https://ai.gitcode.com/zai-org/GLM-4.5V 2025年8月11日&#xff0c;人工智能领域迎来重要突破——智谱AI正式发布具备全球领先性能的开源视觉推理模型GLM…

作者头像 李华
网站建设 2026/7/20 20:13:08

胡桃工具箱:原神玩家的终极桌面管理神器

胡桃工具箱&#xff1a;原神玩家的终极桌面管理神器 【免费下载链接】Snap.Hutao 实用的开源多功能原神工具箱 &#x1f9f0; / Multifunctional Open-Source Genshin Impact Toolkit &#x1f9f0; 项目地址: https://gitcode.com/GitHub_Trending/sn/Snap.Hutao 还在为…

作者头像 李华
网站建设 2026/7/21 0:24:20

暗黑破坏神2存档编辑器:终极角色定制与装备管理完整指南

暗黑破坏神2存档编辑器&#xff1a;终极角色定制与装备管理完整指南 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor 暗黑破坏神2存档编辑器是一款功能强大的Web工具&#xff0c;让玩家能够轻松修改角色属性、管理装备物品和控制…

作者头像 李华
网站建设 2026/7/20 21:18:55

26、Google Docs 演示文稿使用指南

Google Docs 演示文稿使用指南 1. 上传与下载演示文稿 1.1 上传文件 新上传的幻灯片演示文稿不会自动在浏览器标签中打开,但可以从 Google Docs 界面标签中查看(可能需要重新加载页面才能访问)。由于上传文档格式的复杂性,可能无法完美转换。特别是如果上传的演示文稿使…

作者头像 李华
网站建设 2026/7/20 11:25:45

38、Google应用入门与谷歌地图使用指南

Google应用入门与谷歌地图使用指南 一、网站建设与管理要点 (一)链接使用原则 在网站页面链接设置上,要采用一致的方法,避免用户产生混淆。例如,侧边栏可包含所有顶级页面的链接。若创建了顶级页面的子页面,要确保顶级页面包含指向直接子页面的链接,让访问者能理解网…

作者头像 李华
网站建设 2026/7/20 13:39:29

42、谷歌博客使用指南:从基础设置到盈利变现

谷歌博客使用指南:从基础设置到盈利变现 一、博客基础设置 1.1 全局设置 全局设置中的第一项是更改“文章编辑器”。默认情况下,使用“旧编辑器”,你也可以选择“更新后的编辑器”,它的功能类似于“页面编辑器”。若想查看更新后编辑器新增的功能,可点击“最新功能”链…

作者头像 李华