zoukankan      html  css  js  c++  java
  • 递归的现实应用

    问设有50个台阶的楼梯, 若一个人上楼梯跨出一步有三种迈法:一次上1个台阶, 一次上2个台阶, 一次上3个台阶。 问总共有多少种不同的上楼方式?

    考虑他迈最后一步的情况, 即最后一步上了1个台阶, 也可能上了2个台阶, 也可能上了3个台阶。

    Last step=1 -> 前边有(50-1) 个台阶-> 49个台阶有多少种上楼方式

    Last step=2 -> 前边有(50-2) 个台阶 -> 48个台阶有多少种上楼方式

    Last step=3 -> 前边有(50-3) 个台阶 -> 47个台阶有多少种上楼方式

    所以, 50个台阶情况=49个台阶的情况+48个台阶的情况+47个台阶的情况

    考虑开始,*--1*2指一次迈2个台阶

    1个台阶 -> 1种方式(1*1)

    2个台阶 -> 2种方式(1*1+1*1,1*2)

    3个台阶 -> 4种(1*3, 1*1+1*2, 1*2+1*1, 1*1+1*1+1*1)

            static int Matrix(int n)
            {
                if (n < 1)
                    return 0;
                if (n == 1)
                    return 1;
                else if (n == 2)
                    return 2;                    
                else if (n == 3)
                    return 4;
                else 
                    return Matrix(n - 3) + Matrix(n - 2) + Matrix(n - 1);
            }
  • 相关阅读:
    .hpp文件
    最小高度的BST
    检查图中的有向路径
    c++ 对象内存布局详解
    链表求差
    offer--链表反转和从尾到头打印链表
    平衡二叉树的判断
    java 抽象类和接口
    原型模式--prototype
    装饰模式decorator
  • 原文地址:https://www.cnblogs.com/qixue/p/2515423.html
Copyright © 2011-2022 走看看