递归函数求解爬楼梯问题问题求解

  • 我把递归想象成在爬楼梯,调用一佽自身相当于上一层楼梯
  • 到了递归的出口了,也就是楼梯的最顶端,站的高看的远
  • 再从上往下做路途上没有做完的事
  • 一层递归相当于一层梦境
  • 囚从一层一层的梦境中醒来
  • 1.有着相似的行为要完成(递归的代码块)
  • 2.有明显的结束标志(递归的出口)
  • 递归递归函数求解爬楼梯问题一般不可缺少參数,有的情况可以添加参数实现递归

第一个例子,递归输出0-9

第二个例子,递归实现数组求和

注释的输出语句输出每一步进行的运算

版权声明:本文为博主原创文章未经博主允许不得转载。 /a/article/details/

在网上看到一个爬楼梯的算法这里记录一下:

第一种题目(递归实现):

假设一个楼梯有 N 阶台阶,人每次最多可以跨 M 阶求总共的爬楼梯方案数。

例如楼梯总共有3个台阶人每次最多跨2个台阶,也就是说人每次可以走1个也可以走2个,但最多不会超过2个那么楼梯总共有这么几种走法:

我们使用递归处理,在最后最多可跨越阶数大于剩余台阶的时候需要做处理。

这題有一道变体(非递归方式实现):

假设一个楼梯有 N 阶台阶人每次最多可以跨 2 阶,求总共的爬楼梯方案数要求不用递归实现

先不写代碼,自己计算当楼梯数为1、2、3、4、5时对应的爬法有:1、2、3、5、8、13、21种。
可以发现随着楼梯数n的增加,爬法总数呈现斐波那契数列规律增加即f(n) = f(n-1) + f(n-2)
知道这个规律后,使用下面的循环即可实现:

版权声明:本文为博主原创文章未经博主允许不得转载。 /qq_/article/details/

树老师爬楼梯他可以每次走1级或者2级,输入楼梯的级数求不同的走法数。

例如:楼梯一共有3级他可以每佽都走一级,或者第一次走一级第二次走两级,也可以第一次走两级第二次走一级,一共3种方法

输入:输入包含若干行,每行包含┅个正整数N代表楼梯级数,1 <=N <= 30输出不同的走法数每一行输入对应一行

输出:不同的走法数,每一行输入对应一行输出

很经典也很简单的題算法如下:

我要回帖

更多关于 递归函数求解爬楼梯问题 的文章

 

随机推荐