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);
            }

  • 相关阅读:
    HDU 5441 离线处理 + 并查集
    [转载]HDU 3478 判断奇环
    POJ 1637 混合图的欧拉回路判定
    [转载] 一些图论、网络流入门题总结、汇总
    UVA 820 --- POJ 1273 最大流
    [转载 ]POJ 1273 最大流模板
    POJ 3041 -- 二分图匹配
    2014西安现场赛F题 UVALA 7040
    UVA 12549
    割点、桥(一点点更新)
  • 原文地址:https://www.cnblogs.com/zxsoft/p/1029382.html
Copyright © 2011-2022 走看看