比如说现在有3级楼梯,那f(3)就等于f(2)+f(1),也就是2 + 1 = 3种走法。再要是4级楼梯呢,f(4)就等于f(3)+f(2),根据前面算出来的,f(3)=3,f(2)=2,那f(4)=3+2 = 5种走法。 递归算法就像是一个聪明的小助手,它能把复杂的爬楼梯走法数量的计算,分解成简单的基础情况和重复的小问题。
一、爬楼梯算法递归实现:假设一个楼梯有N阶台阶,人每次最多跨M阶,求总共的爬楼梯的方案数 例如:1-100的台阶,每个台阶随机权重,每次只能走一个或者两个台阶,找出从1-100最短路径 递归法: privatestaticintcalculateCount(intladder,intmaxJump){intjump=0;if(ladder==0){return1;//ladder=0,进入到最底层,记...
算法交流:3089 爬楼梯【2.2基本算法之递归和自调用函数】 树老师爬楼梯,他可以每次走1级或者2级,输入楼梯的级数,求不同的走法数 例如:楼梯一共有3级,他可以每次都走一级,或者第一次走一级,第二次走两级 也可以第一次走两级,第二次走一级,一共3种方法。 输入输出格式Input/output 输入格式: 输入包含若...
楼梯一共有n层,每次只能走1层或者2层,而要走到最终的n层。不是从n-1或者就是n-2来的。 F(1) = 1 F(2) = 2 F(n) = F(n-1) + F(n-2) (n>=3) 方法一:使用递归函数 defrunupstairs(t,n):ifn==1:return1ifn==2:return2else:returnt.runupstairs[n-1]+t.runupstaris[n-2] 这是...
爬楼梯递归算法 你们有没有爬过楼梯呀?比如说,你面前有一个3层的楼梯。你可以一次走1步,也可以一次走2步。那你有多少种不同的方法可以爬到楼顶呢? 我们来想象一下哦。如果只有1层楼梯,那很简单呀,就只有1种方法,就是直接走1步上去。 要是有2层楼梯呢?你可以一次走1步,分2次走完;或者你一下子走2步...
dp[i]: 爬到第i层楼梯,有dp[i]种方法 classSolution{ publicintclimbStairs(intn) { if(n<=1)returnn;//防止对dp[2]操作空指针 int[]dp=newint[n+1]; dp[1]=1; dp[2]=2; for(inti=3;i<=n;i++){//注意i从3开始 dp[i]=dp[i-1]+dp[i-2]; ...
简介:<LeetCode天梯>Day037 爬楼梯(递归+动态规划) | 初级算法 | Python 以下为我的天梯积分规则: 每日至少一题:一题积分+10分 若多做了一题(或多一种方法解答),则当日积分+20分(+10+10) 若做了三道以上,则从第三题开始算+20分(如:做了三道题则积分-10+10+20=40;做了四道题则积分–10+10+20...
classSolution{publicintclimbStairs(intn){if(n<=2){returnn;}intfirstStep=1;intsecondStep=2;for(inti=3;i<=n;i++){inttemp=firstStep+secondStep;firstStep=secondStep;secondStep=temp;}returnsecondStep;}} 优化方案的思想与递归方案的思想类似,都有点斐波那契函数...
重复计算 空间复杂度高 栈溢出问题 所有递归问题都可以通过迭代循环来替代 可能出现无限循环问题 爬楼梯问题 -列出递归表达式 -简单的递归问题虽然能够计算出值 ,但是计算的时间复杂度过高。重复计算的值过多。可以通过一个哈希表来存储已经计算过的值,提高效率 降低时间复杂度。