演算法題/青蛙跳臺階問題
阿新 • • 發佈:2019-01-04
python2.7
問題一:一隻青蛙一次可以跳上1級臺階,也可以跳上2級。求該青蛙跳上一個n級的臺階總共有多少種跳法。
f(n) = f(n-1)= 1 n=1
f(n) = 1+1 = 2 n=2 當第一次跳一個臺階時,有一種方法,當第一次跳兩個臺階時有一種方法
f(n) = 2+1 =3 n=3 當第一次跳一個臺階時有f(3-1)中方法,當第一次跳兩個臺階時有f(3-2)中方法
因此,f(n) = f(n-1)+f(n-2) n>2
問題二:一隻青蛙一次可以跳上1級臺階,也可以跳上2級……它也可以跳上n級。求該青蛙跳上一個n級的臺階總共有多少種跳法。
f (n) =f(n-1)= 1 n=1
f(n) = 1+1 = 2 n=2 當第一次跳一個臺階時,有一種方法,當第一次跳兩個臺階時有一種方法
f(n) = 2+1 =3 n=3 當第一次跳一個臺階時有f(3-1)種方法,當第一次跳兩個臺階時有f(3-2)種方法,當第一次跳3個臺階時有1種跳法
因此
f(n) = f(n-1)+f(n-2)+......f(1)+1種跳法
f(n-1) = f(n-2)+f(n-3)+.....f(1)+1
f(n)-f(n-1)=f(n-1)
所以f(n) = 2*f(n-1) n>2
#coding:utf-8
def jump1(n) :
if n==1:
return 1
elif n==2:
return 2
else:
return jump1(n-1)+jump1(n-2)
def jump2(n):
if n==1:
return 1
elif n==2:
return 2
else:
return 2*jump1(n-1)
print(jump1(5))
print(jump2(5))