有1000阶的台阶,一个人每次只能走一阶或两阶,用一个递归算法求出共有多少种走法。
2010-11-13 12:21
507 查看
分析】这是一典型的排列组合问题, 但若用排列组合来分析则演变为纯数学问题,则无法用递归的方法来解决。能使用递归的方法的模型的规律是问题的解决方法与问题的规模无关,因此可以先从数字的规律入手:
假设共有i阶台阶, 走完所有的台阶有n种走法,则:
1. i = 1时, n = 1; {1}
2. i = 2, n = 2; {[1, 1], [2]}
3. i = 3, n = 3; {[1, 1, 1], [1, 2], [2, 1]}
4. i = 4, n = 5; {[1, 1, 1, 1], [1, 1, 2], [1, 2, 1], [2, 1, 1], [2, 2]}
5. i = 5, n = 8; ............
.........................................
.........................................
因此,我们可以得到规律
f(n) = f(n-1) + f(n-2) (n>=3), 从而得到递归算法。
假设共有i阶台阶, 走完所有的台阶有n种走法,则:
1. i = 1时, n = 1; {1}
2. i = 2, n = 2; {[1, 1], [2]}
3. i = 3, n = 3; {[1, 1, 1], [1, 2], [2, 1]}
4. i = 4, n = 5; {[1, 1, 1, 1], [1, 1, 2], [1, 2, 1], [2, 1, 1], [2, 2]}
5. i = 5, n = 8; ............
.........................................
.........................................
因此,我们可以得到规律
f(n) = f(n-1) + f(n-2) (n>=3), 从而得到递归算法。
相关文章推荐
- 有1000阶的台阶,一个人每次只能走一阶或两阶,用一个递归算法求出共有多少种走法。
- 超级台阶 时间限制:1000 ms | 内存限制:65535 KB 难度:3 描述 有一楼梯共m级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第m级,共有多少走法? 注:规定从一级到一
- 一只青蛙一次只能跳一阶或两阶台阶,总共要跳n阶,求总共有多少总跳法
- 有50级台阶,每次走一阶或两阶,有多少种走法?
- N阶台阶,每次只能走一个台阶或者两个台阶,求一共有多少种走法?
- 描述 有一楼梯共m级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第m级,共有多少走法? 注:规定从一级到一级有0种走法。
- 段很长的道路,一个油漆工刷路面,他有两种工具,工具1每次可以刷1米,工具2每次可以刷3米,1)问当道路长度是n米时,使用工具1和工具2配合使用刷完全部道路,共有多少种方式?
- 腾讯面试题:50个阶梯,你一次可以上一阶或两阶,走上去,共有多少种走法【原】
- 编写多线程程序,模拟多个人通过一个山洞。这个山洞每次只能通过一个人,每个人通过山洞的时间为2秒(sleep)。随机生成10个人,都要通过此山洞,用随机值对应的字符串表示人名,打印输出每次通过山洞的人名
- 有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法?请编程实现。
- 编写多线程程序,模拟多个人通过一个山洞。这个山洞每次只能通过一个人,每个人通过山洞的时间为2秒(sleep)。
- 一个人上台阶,一次可上一个阶梯或两个,问这个人上十个阶梯有多少种走法?
- 编写多线程程序,模拟多个人通过一个山洞。这个山洞每次只能通过一个人,每个人通过山洞的时间为2秒(sleep)。随机生成10个人,都要通过此山洞,用随机值对应的字符串表示人名,打印输出每次通过山洞的人名
- 编写多线程程序,模拟多个人通过一个山洞。这个山洞每次只能通过一个人,每个人通过山洞的时间为2秒(sleep)。随机生成10个人,都要通过此山洞,用随机值对应的字符串表示人名,打印输出
- 现有一个m * n的网格,从最左上角出发,每次只能向右或者向下移动一格,问有多少种不同的方法可以到达最右下角的格子
- 百度面试题01——50个阶梯,你一次可以上一阶或两阶,走上去,共有多少种走法?
- 10个台阶,每次只能上1个或者2个,一共有多少种走法
- 百度面试题01——50个阶梯,你一次可以上一阶或两阶,走上去,共有多少种走法?
- 腾讯面试题:50个阶梯,你一次可以上一阶或两阶,走上去,共有多少种走法
- 编写多线程程序,模拟多个人通过一个山洞。这个山洞每次只能通过一个人,每个人通过山洞的时间为2秒(sleep)。随机生成10个人,都要通过此山洞,用随机值对应的字符串表示人名,打印输出每次