题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
没啥好说的,就是一个斐波那契数列。
python版
"""
1 (1)
2 (11,2)
3 (12,21,111)
4 (1111,22,112,121,211)
5 (11111,221,212,122,1121,2111,1112,1211)
6 (111111,222,2211,1122,2112,1221,2121,1212,21111,12111,11211,11121,11112,)
"""
class Solution:
def jumpFloor(self, number):
# write code here
#第一种方法:
res = [1, 1, 2]
while len(res) <= number:
res.append(res[-1] + res[-2])
return res[number]
#第二种方法
a = 1
b = 1
for i in range(0,number):
a,b = b,a+b
return a
if number < 1:
return 0
if number ==1:
return 1
if number == 2:
return 2
ret = 0
a = 1
b = 2
for i in range(3,number+1):
ret = a+b
a = b
b = ret
return ret
c++
class Solution {
public:
int jumpFloor(int n) {
int f=1,g=2;
n--;
while(n--)
{
g+=f;
f=g-f;
}
return f;
}
};