zoukankan      html  css  js  c++  java
  • 上L层楼梯有几种上法?

    某楼梯有L层台阶,上楼梯可以一次迈一层,也可以一次迈两层。那么走完这L层台阶共有几种走法?

    用递归的思路分析:

    1.如果只有一层楼梯,那么自然只有一种走法。
    2.如果有两层楼梯,那么有两种走法。(一种是一次迈一层,另一种是一次把两层全迈上去)
    3.如果有L层楼梯,那么,先走一层,剩下的层数的走法数。加上先走两次,剩下的层数的走法数的和。就是L层的总共走法。

    于是假设存在某函数f(x),参数x表示层数,返回值是走x层的总共走法数。那么可以知道:
    f(1)=1;               ①
    f(2)=2;               ②
    f(x)=f(x-1)+f(x-2);   ③


    综合1,2,3。递归函数就可以写出来了。

    C#实现:
            static void Main(string[] args)
            
    {
                
    int l=0;
                
    while(true)
                
    {
                    Console.Write(
    "L=");
                    
    string str = Console.ReadLine();
                    l 
    = int.Parse(str);
                    
    if (l == 0break;
                    Console.WriteLine(CalcStairs(l));
                }

            }

            
    static int CalcStairs(int L)
            
    {
                
    if (L == 1)
                    
    return 1;
                
    if (L == 2)
                    
    return 2;
                
    return  CalcStairs(L - 1+ CalcStairs(L - 2);
            }

  • 相关阅读:
    Count and Say leetcode
    Find Minimum in Rotated Sorted Array II leetcode
    Find Minimum in Rotated Sorted Array leetcode
    Search in Rotated Sorted Array II leetcode
    search in rotated sorted array leetcode
    Substring with Concatenation of All Words
    Subsets 子集系列问题 leetcode
    Sudoku Solver Backtracking
    Valid Sudoku leetcode
    《如何求解问题》-现代启发式方法
  • 原文地址:https://www.cnblogs.com/zxsoft/p/1029382.html
Copyright © 2011-2022 走看看