Python实现经典算法之递推算法

走台阶

小明上台阶,每次可以走1个台阶或2个台阶,请问上到n层台阶总共有多少种走法?

先用递归的算法:

台阶数

上到最高层台阶的方法

几种走法

规律


1

1

1



2

1+1

2

2



3

1+1+1

1+2

2+1

3

3=2+1


4

1+1+1+1

1+1+2

1+2+1

2+1+1

2+2

5

5=3+2


5

1+1+1+1+1

1+1+1+2

1+1+2+1

1+2+1+1

2+1+1+1

2+2+1

2+1+2

1+2+2

8

8=5+3

f(n) = f(n-1)+f(n-2)



Python实现经典算法之递推算法

递归算法总结:

1.找到不规律的部分,写成 if... return

2.找到 f(n)和 f(n-1)或者f(n-1) 以及f(n-2)的关系 即最后一个和前面一个或两个或更多个的关系

递推算法:


1

1

a

2

2

b a

3

3

b(a+b) a

4

5

b(a+b) a

5

8

b(a+b)

for i in range(3,n+1):

c = a+b

a = b

b = c


Python实现经典算法之递推算法


递推算法总结:

  1. 找出不规律的部分, a = ... b = ...
  2. 有规律的部分: for i in range(m, n+1): m:开始有规律部分的索引号

写循环:

后面的 和 前面一个或者几个的关系 如 c=a+b

然后a,b是如何变化的 如 a = b b = c

算法心得:

  1. 罗列前面5个的结果,看有没有什么规律
  2. 把规律写成公式
发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章