一题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。
# -*- coding:utf-8 -*-
#一共多少层 1, 2, 3, 4, 5, 6, 7---
#多少种跳法 1, 2, 3, 5, 8, 13, 21---
class Solution:
def jumpFloor(self, number):
# write code here
a=1
b=2
if number==1:
return a
if number==2:
return b
for i in range(number-1):
a,b=b,a+b
return a
二题目描述
一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
# -*- coding:utf-8 -*-
#一共多少层 1, 2, 3, 4, 5, --
#多少种跳法 1, 2, 4, 8, 16, ------
#f(n) = f(n-1)+f(n-2)+…+f(1)
#f(n-1) = f(n-2)+ f(n-3)…+f(1)
#两式相减,得到f(n) = 2f(n-1).
class Solution:
def jumpFloorII(self, number):
# write code here
if number <= 0:
return 0
if number == 1:
return 1
if number == 2:
return 2
dp=[0]*(number+1)
for i in range(2,n+1):
dp[i[=2*dp[i-1]
return dp[-1]
class Solution:
def jumpFloorII(self, number):
# write code here
if number <= 0:
return 0
else:
return pow(2,number-1)
#return 2**(number-1)