【C语言】递归问题(爬楼梯)

2 篇文章 2 订阅
订阅专栏

题目

楼梯有n阶台阶,一次可以上1阶、2阶或者3阶台阶,使用递归的方法计算出有多少种走完楼梯的方式。

解题思路

图解

思路

  • 到第一台阶方式:地面到第一台阶的方式,需要 1 步(1) = 1
  • 到第二台阶方式:从地面一次走两步(1) +  从台阶 1 走一步(1) = 2
  • 到第三台阶方式:从地面一次走三步(1) +  从台阶 2 走一步(1) + 从台阶 1 走两步(2)= 4
  • 到第四台阶方式:从台阶 1 一次走三步(1) + 从台阶 2 走两步(2) + 从台阶 3 走一步(4) = 7
  • 到第五台阶方式:从台阶 2 一次走三步(2) + 从台阶 3 走两步(4) + 从台阶 4 走一步(7) =  13

可以推导出来:

到台阶 n (n  > 2)的方式:从台阶 (n - 3) 一次走三步 + 从台阶 (n - 2) 走两步, 从台阶 (n - 1) 走一步

-

从第四个开始都是把前面的步骤都加起来,形成一个递归的规则

递归代码:

int steps(int num) {
    if (num < 0)
        return 0;
    if (num == 0 || num == 1)
        return 1;
    if (num == 2)
        return 2;
    return steps(num - 1) + steps(num - 2) + steps(num - 3);
}
c语言 跳台阶问题的解决方法
09-05
本篇文章是对c语言中跳台阶问题的解决方法进行了详细的分析介绍,需要的朋友参考下
0积分下载C语言递归实现N皇后问题
08-27
我用二维数组代表棋盘,用户输入棋盘的维度N,程序输出所有合法布局以及布局的个数。也就是说,几皇后,程序都可以输出合法布局以及个数。输入0,结束程序。 代码非常简单易懂,注释很全,与网上的不同,没有用指针...
力扣70 爬楼梯 C语言 动态规划 递归
XinxingZh的博客
05-07 359
爬 0 层和爬 1 层都只有一种情况, 但是爬两层有两种:一次爬一层一共爬两次、一次爬两层一共爬一次,爬三层有三种:一次爬一层一共爬三次、先爬一层再爬两层一共爬两次、先爬两层再爬一层一共爬两次。所以 f(0) = 1, f(1) = 1, f(2) = 2, f(3) = 3, f(4) = 5。规律是 f(n) = f(n-1) + f(n-2),因为爬到第 n 阶有两种情况,分别是站在第 n-1 阶爬一层和站在第 n-2 阶爬两层,所以就是 f(n-1) 和 f(n-2)的和。有两种方法可以爬到楼顶。
C语言入门算法——爬楼梯(了解动态规划)
yandadzf的博客
04-19 744
了解动态规划,减小运行时间,在题目越来越难的情况下,原本的暴力手段已经不足以解决问题,只有通过学习不同的算法才能完成更高难度的题目,以下是本次总结。
爬楼梯问题(4种解法)
2302_80105876的博客
02-01 1118
递归 记忆递归 滚动数组 动态规划 斐波那契
C语言:走台阶问题递归解法)
2303_80025768的博客
10-19 1767
【代码】C语言:走台阶问题递归解法)
C语言】跳台阶问题递归
moteandsunlight的博客
05-02 3560
一、问题描述 二、思路分析 三、代码实现 四、补充
台阶问题(以C语言形式的呈递)(动态规划与DFS算法
2301_79163457的博客
10-07 708
且F(1)=1。
函数与递归:三大经典例题详析
weixin_73538099的博客
12-15 470
在函数的基础上,分别对跳台阶,走方格,排列三个例题进行详细的解释
N阶楼梯上楼问题
Coding
09-04 3258
题目描述 N阶楼梯上楼问题:一次可以走两阶或一阶,问有多少种上楼方式。(要求采用非递归) 输入描述: 输入包括一个整数N,(1&lt;=N&lt;90)。 输出描述: 可能有多组测试数据,对于每组数据, 输出当楼梯阶数是N时的上楼方式个数。 示例1 输入 复制 4 输出 复制 5 第n阶台阶的方法等于上到第n-1阶台阶的方法加上第n-2阶的台阶的方法之和,因为...
楼梯有 NN 阶,上楼可以一步上一阶,也可以一步上二阶。编一个程序,计算共有多少种不同的走法。
hzsd_ygdcs的博客
04-12 2238
#include<stdio.h> int main() { int f,i,f1=1,f2=2; scanf("%d",&i); if(i==1) printf("1"); if(i==2) printf("2"); if(i>=3) { do{ f=f1+f2; f1=f2; f2=f; ...
c语言递归算法ppt课件.ppt
11-13
C语言递归算法 递归算法是计算机科学中的一个基本概念,是指在函数中调用自己的函数,直到达到某个终止条件为止。递归算法可以分为两种类型:基于回溯策略的递归算法和基于分治策略的递归算法。 1. 基于回溯策略的...
C语言项目爬楼梯的两种实现方法参考
01-21
【项目-爬楼梯】 楼梯有n阶台阶,上楼可以一步上1阶,也可以一步上2阶,编一程序计算共有多少种不同的走法? 【参考解答(递归法)】 基础:楼梯有一个台阶,只有一种走法(一步登上去);两个台阶,有2种走法(一步...
波兰表达式c语言递归实现
最新发布
05-27
波兰表达式c语言递归 波兰表达式(Polish Notation),又称为前缀表达式,是一种没有括号的算术表达式,其中运算符位于操作数之前。与之相对的是逆波兰表达式(Reverse Polish Notation,RPN),也就是通常所说的...
C语言递归求汉诺塔问题.docx
04-18
汉诺塔c语言递归
C语言递归调用举例
04-22
C语言递归调用举例,可直接复制粘贴。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。...
LeetCode70. 爬楼梯(C++动态规划简单题)
falldeep的算法世界
12-03 1081
假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?示例 1:输入:n = 2 输出:2 解释:有两种方法可以爬到楼顶。 1. 1 阶 + 1 阶 2. 2 阶 示例 2:输入:n = 3 输出:3 解释:有三种方法可以爬到楼顶。 1. 1 阶 + 1 阶 + 1 阶 2. 1 阶 + 2 阶 3. 2 阶 + 1 阶 提示:1
(一步两步)走楼梯问题C语言版)
ALLe_Y的博客
09-06 621
n = 1 的时候,只有一种走法;n = 2的时候,有两种走法;//n==1,一种方法,n=2,两种,n>3累加
LeetCode(Python)—— 爬楼梯(简单)
热门推荐
m0_61661179的博客
10-10 6万+
概述:假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?
c语言递归函数解决爬楼梯问题
05-30
好的,针对你的问题,我可以给出一个使用递归函数解决爬楼梯问题的示例代码: ```c #include <stdio.h> int climbStairs(int n) { if (n <= 2) { return n; } return climbStairs(n - 1) + climbStairs(n - 2); } int main() { int n = 5; int ways = climbStairs(n); printf("爬 %d 级楼梯的方法数为 %d\n", n, ways); return 0; } ``` 在这个示例代码中,`climbStairs` 函数接受一个整数参数 `n`,表示要爬的楼梯的级数。如果 `n` 小于等于 2,则直接返回 `n`,因为在这种情况下爬楼梯的方法数就是 `n`。否则,使用递归调用计算爬 `n - 1` 级楼梯和爬 `n - 2` 级楼梯的方法数,并将它们相加作为爬 `n` 级楼梯的方法数返回。 在 `main` 函数中,我们将 `n` 设置为 5,然后调用 `climbStairs` 函数计算爬 5 级楼梯的方法数,并将结果输出到控制台上。 需要注意的是,使用递归函数解决爬楼梯问题的效率并不高,因为在递归调用的过程中会重复计算很多中间结果。为了提高效率,我们可以使用动态规划等其他算法来解决这个问题

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • VS+QT安装配置 15773
  • visual studio控制台中文乱码问题 13268
  • 【C语言】递归问题(爬楼梯) 10349
  • EasyX图形库基础 4177
  • 【C语言】数组 - 冒泡排序法 2463

分类专栏

  • C++ 30篇
  • C++11 多线程 1篇
  • C++11 智能指针 3篇
  • 数据结构 11篇
  • C语言 2篇
  • Qt Creator 1篇
  • Web 2篇
  • 日常debug 2篇

最新评论

  • VS+QT安装配置

    狂丿丶磊少: NBNB

  • EasyX图形库基础

    cmh20120102: 窗口生成还有第三个参数 值 含义 EX_DBLCLKS 在绘图窗口中支持鼠标双击事件。 EX_NOCLOSE 禁用绘图窗口的关闭按钮。 EX_NOMINIMIZE 禁用绘图窗口的最小化按钮。 EX_SHOWCONSOLE 显示控制台窗口。 EasyX 文档里有

  • 独占指针 std::unique_ptr

    搁浅的蒲公英: make_unique不是C++11的特性,放在C++11的专栏里不太合适

  • visual studio控制台中文乱码问题

    要做就做优质牛马: 按照第一个方法测试了,还是不行

  • visual studio控制台中文乱码问题

    VIRGO_尽兴自在: 1、GB2312-936 2.一个项目包含多个文件,每个文件的高级保存选项一致

大家在看

  • QT/QMessageBox/QTimerEvent/使用定时器制作一个闹钟
  • hot 100 52
  • 【大模型应用开发 动手做AI Agent】Function Call 与 API 插件 354
  • Unity贪吃蛇改编【详细版】 1488
  • 客户端输入网址后发生的全过程解析(协议交互、缓存、渲染)

最新文章

  • 【Web】CSS
  • Visual Code 打开方式添加到右键菜单
  • visual studio控制台中文乱码问题
2023年4篇
2022年55篇

目录

目录

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

两个鬼故事姓名起名钟爱尚姓女孩起名洋气小男孩起名诗意前鼻音和后鼻音有哪些2018年开店起名明星 起名锅盔加盟店梦见很多鱼公司起名众字打头大家一起来英文版歌名通信起名店名大全给给工作室起名字大全一生一世美人骨百度云起一个家政公司名字日文起名器你好再见个独企业起名宝宝起名大全宝典免费无忧人才情义两重天raped专业起名免费网站给自己起一个英文名字膜结构公司起名大全甜蜜蜜在线观看风继续吹周易起名大师注册码西安大浪淘沙洗浴中心恶魔法典少年生前被连续抽血16次?多部门介入两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”淀粉肠小王子日销售额涨超10倍高中生被打伤下体休学 邯郸通报单亲妈妈陷入热恋 14岁儿子报警何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言张家界的山上“长”满了韩国人?男孩8年未见母亲被告知被遗忘中国拥有亿元资产的家庭达13.3万户19岁小伙救下5人后溺亡 多方发声315晚会后胖东来又人满为患了张立群任西安交通大学校长“重生之我在北大当嫡校长”男子被猫抓伤后确诊“猫抓病”测试车高速逃费 小米:已补缴周杰伦一审败诉网易网友洛杉矶偶遇贾玲今日春分倪萍分享减重40斤方法七年后宇文玥被薅头发捞上岸许家印被限制高消费萧美琴窜访捷克 外交部回应联合利华开始重组专访95后高颜值猪保姆胖东来员工每周单休无小长假男子被流浪猫绊倒 投喂者赔24万小米汽车超级工厂正式揭幕黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发当地回应沈阳致3死车祸车主疑毒驾恒大被罚41.75亿到底怎么缴妈妈回应孩子在校撞护栏坠楼外国人感慨凌晨的中国很安全杨倩无缘巴黎奥运校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变王树国卸任西安交大校长 师生送别手机成瘾是影响睡眠质量重要因素国产伟哥去年销售近13亿阿根廷将发行1万与2万面值的纸币兔狲“狲大娘”因病死亡遭遇山火的松茸之乡“开封王婆”爆火:促成四五十对奥巴马现身唐宁街 黑色着装引猜测考生莫言也上北大硕士复试名单了德国打算提及普京时仅用姓名天水麻辣烫把捣辣椒大爷累坏了

两个鬼故事 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化