程序的使用,最多的还是理解要解决问题的方法。而解决问题的方法,即是算法。
认真理解和学会算法,是最有用的科学。
1、冒泡排序法:a=[11,29,30,44,56,20]
for i in range(len(a)):
… for j in range(len(a)-1-i):
… if a[j]>a[j+1]:
… a[j],a[j+1]=a[j+1],a[j]
… print(a)
…
[11, 29, 30, 44, 20, 56]
[11, 29, 30, 20, 44, 56]
[11, 29, 20, 30, 44, 56]
[11, 20, 29, 30, 44, 56]
2、递归:当需要解决一个复杂问题,能够将这个问题拆分成若干子问题,函数自己调用自己(子问题),直到条件出口,执行完成。
- >>> def fox(n):
- … if n==1:
- … return 1
- … else:
- … print(n)
- … return n+fox(n-1)
- …
- >>> fox(100)
- 100
- 99
- 98
- 97
- ……
- 5050
最典型的是斐波拉切数列:
- >>> def fibonacci(n):
- … if n==1:
- … return 1
- … elif n==2:
- … return 2
- … else:
- … return fibonacci(n-1)+fibonacci(n-2)
- …
- >>> fibonacci(10)
- 89
- >>> fibonacci(3)
- 3
- >>> fibonacci(4)
- 5
- >>> fibonacci(5)
- 8
最典型的游戏:汉诺塔游戏
我估计我又要在算法的领域里折腾一段时间了……数学强+算法强,注定软件非常强的。
作为研究方向,有机会就写一本工程领域常用到的算法书。