#使用递归来计算会造成比较多的重复运算,效率较低
#输入一个n,得到数列的第n项
def fib(n):
result1 = [0,1]
if n<2:
return result1[n]
fib1 = 0
fib2 = 1
fibn = 0
for i in range(2,n+1):
fibn = fib1+fib2
fib1 = fib2
fib2 = fibn
return fibn
#print('斐波那契数列',fib(6))
#类似:青蛙跳台阶问题-一只青蛙一次可以跳上一级台阶,也可以跳上两级台阶,求跳一个n阶的有多少种跳法
#分析:n>2,①第一次跳1级,后面是n-1;②第一次跳2级,后面是n-2. f(n) = f(n-1)+f(n-2)
def leap(n):
if n <= 2:
return n
a = 1
b = 2
for i in range(3,n+1):
a,b = b,a+b
return b
#print('有',leap(4),'种跳法')
#修改条件,一次可跳一阶,也可以二阶,也可以三阶,也可以跳n阶,跳上一个n阶有多少种跳法 f = 2^n-1