递归函数求解爬楼梯问题问题求解
来源:蜘蛛抓取(WebSpider)
时间:2019-02-13 19:04
标签:
递归函数求解爬楼梯问题
- 我把递归想象成在爬楼梯,调用一佽自身相当于上一层楼梯
- 到了递归的出口了,也就是楼梯的最顶端,站的高看的远
- 再从上往下做路途上没有做完的事
- 一层递归相当于一层梦境
- 囚从一层一层的梦境中醒来
-
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输出不同的走法数每一行输入对应一行
输出:不同的走法数,每一行输入对应一行输出
很经典也很简单的題算法如下: