递归解决常见爬楼梯走一步或是两步问题,走多步也是相同的道理!

it2025-09-23  6

递归解决爬楼梯问题

上楼梯过程中,一次可以走1阶,也可以走两阶,如果有n阶楼梯,一共可以有多少种走法?

推理: 我们在上楼梯的过程通过一阶或是两阶的走法,不断减少楼梯的步数,也就是n阶台阶我们可以通过n-1或是n-2的方式来减少台阶的阶数,最终归于剩下一阶或是两阶的情况来处理 推理走法过程: n阶:可以走一步或是走两步,如果走一步就是n-1;如果是走两步就是n-2 n-1阶:可以走一步或是走两步,如果走一步就是(n-1)- 1;如果是走两步就是(n-1)- 2 n-2阶:可以走一步或是走两步,如果走一步就是(n-2)- 1;如果是走两步就是(n-2)- 2 ………… ………… ………… 2阶:可以走一步或是走两步,如果走一步就是2-1;如果是走两步就是2-2 1阶:走一步就走完 结论:我们可以通过以上推论得出,通过相同的方式来减少台阶数,增加走法。减少一阶有一种走法,减少两阶有两种走法,通过减少一阶台阶,走法加一,或是减少两阶台阶,走法加二的方式逐渐减少台阶来获得最终走法。 示例代码

public class TestDiGui { //声明递归方法 public static long DiGui(long n) { //递归出口 if(n == 1 || n ===2) { //如果剩下1阶,有1种走法,返回1, //如果剩下2阶,有2种走法,返回2 return n; }else { /**如果有n阶,分为第一步走一阶,或是走两阶的; 走1阶是一个分支,走两阶又是另一个分支; 不同的走法又进入了不同的DiGui函数中 */ return DiGui(n - 1) + DiGui(n - 2); } } public static void main(String[] args) { } }

以上为个人学习总结,如有不足之处,还望各位多多指教!!!

最新回复(0)