1. 递归: 函数调用自己, 就是函数可以在声明的执行之中调用自己。凡是用递归可以做的,都可以用循环实现。
在递归函数中需要附加一个条件判断语句以判断是否需要执行递归调用,并且在特定条件下终止函数的递归动作。
优点: 解决复杂重复的调用程序。
例如: 求阶乘
4! = 4*3*2*1
n! = n*(n-1)!
f(n) = n*f(n-1)
def F(n):
if n == 0 or n == 1:
return 1
else:
return F(n-1)*n
print (F(3))
print (F(4))
2. 汉诺塔
def func(n,A,B,C):
if n == 1:
print ("%s ----> %s"%(A,C))
else:
func(n-1,A,C,B)
func(1,A,B,C)
func(n-1,B,A,C)
func(4,"A","B","C")
3. 二分查找
def search(find_number,data_list): mid = int(len(data_list)/2) if mid > 0: #这个判断很重要,否则会陷入死循环 if find_number > data_list[mid]: print ("rihgt",data_list[mid:]) search(find_number,data_list[mid:]) elif find_number < data_list[mid]: print ("left",data_list[:mid]) search(find_number,data_list[:mid]) elif find_number == data_list[mid]: print ('yes,the number is',data_list[mid]) elif find_number == data_list[0]: print ('yes,the number is',data_list[0]) else: print ('Can\'nt find') else: print ('Can\'nt find') search(24,[1,2,3,4,5,7,9,10,12,14,16,17,19,20,21,22,23,90,100,111,112,113,117])