**
背景:
**
有一个台阶,假设共有n个台阶,一次可以跳一个 ,有可以一次跳两个,最多一次跳n-1个台阶,问一共有多少种跳台阶的方式
eg:三个台阶可以每次一个一个的条,也可以前面跳一格,后面条两格(注意:1+2和2+1属于一种)
分析:
1个台阶1种 (1)
2个台阶1种 (1,1)
3个台阶2种 (1,1,1) (1,2)
4个台阶4种 (1.1.1.1) (2.1.1) (2.2) (3.1)
5个台阶6种 (1.1.1.1.1) (2.1.1.1) (2.2.1) (3.1.1) (3.2) (4.1)
6个台阶10种 (1.1.1.1.1.1) (2.1.1.1.1) (2.2.1.1) (2.2.2) (3.1.1.1) (3.2.1) (3.3) (4.1.1) (4.2) (5.1)
可以看到上面的规律,到5的时候就开始是前面的递归了,就像套娃?
f1=1
f2=1
f3=2
f4=4
f5=f4+f3
f6=f5+f4
上代码:
n=1
def f(n=n):
if n==1:
result=1
elif n==2:
result=1
elif n==3:
result=2
elif n==4:
result=4
else:
result=f(n-1)+f(n-2)
return result
if __name__ == '__main__':
n=1
print(f'当n={n}时候:有{f(n)}种排序组合')
n=2
print(f'当n={n}时候:有{f(n)}种排序组合')
n=3
print(f'当n={n}时候:有{f(n)}种排序组合')
n=4
print(f'当n={n}时候:有{f(n)}种排序组合')
n=5
print(f'当n={n}时候:有{f(n)}种排序组合')
n=6
print(f'当n={n}时候:有{f(n)}种排序组合')