剑指Offer-8-跳台阶

题目描述

一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。

Code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
//递归版(与斐波那契数列思路类似)
class Solution {
public:
// 思路:当前台阶的跳法总数=当前台阶后退一阶的台阶的跳法总数+当前台阶后退二阶的台阶的跳法总数
int jumpFloor(int number) {
if(number==1)
return 1;
if(number==2)
return 2;
return jumpFloor(number-1)+jumpFloor(number-2);
}
};

//非递归版
class Solution {
public:
// 思路:当前台阶的跳法总数=当前台阶后退一阶的台阶的跳法总数+当前台阶后退二阶的台阶的跳法总数
int jumpFloor(int number) {
if(number==1)
return 1;
if(number==2)
return 2;
int num=0,num1=1,num2=2;
while(number>2){
num=num1+num2;
num1=num2;
num2=num;
number--;
}
return num;
}
};

----\(˙<>˙)/----赞赏一下吧~