递归之台阶问题

跳台阶题目描述

一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

解题思路

当n=1时,次数f(n)=1。 当n=2时,次数f(n)=2。(11或2) 当n>2时,当前一步可以跳一级,,也可以跳两级,次数f(n)=f(n-1)+f(n-2)。

实现代码class Solution {public:int jumpFloor(int number) {if (number <= 2)return number;elsereturn jumpFloor(number – 1) + jumpFloor(number – 2);}};变态跳台阶

一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

题目描述

一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

解题思路

当台阶数为n时,可以分为以下步骤来完成: 设第一次跳的台阶数为s,跳台阶方式数为T,则: (1)s=1时,T(n) = T(n-1) (2)s=2时,T(n) = T(n-2) . . . (n)s=n时,T(n) = T(0) = 1 所以总的跳台阶方式数T可以表示为: T(n) = T(0) + T(1) + T(2) + … + T(n-1) 由于T(0) = T(1) = 1,所以T(n) = 2^(n-1)

实现代码class Solution {public:int jumpFloorII(int number) {return pow(2, number – 1);}};

只有经历过地狱般的折磨,才有征服天堂的力量。

递归之台阶问题

相关文章:

你感兴趣的文章:

标签云: