1、递归
非递归例子:
def factorial(n):
result=1
for i in range(1,n+1):
result *=i
print result
factorial(2)
递归例子:
def factorial(n):
if n == 1:#递归必须要有出口,即考虑到最后的结束如factorial(1)给定结果
return 1
else:
return n * factorial(n-1) #递归过程中无法打印
print(factorial(2))#可以用print打印
2、二分查找 :原理先找到左右边界的中值,判断与target的大小,继而递归进入左右二个定义域
def BinarySearch2(target, SortedList, left, right):
if left > right:
return -1
mid = int((left + right) / 2)
if target == SortedList[mid]:
return mid
elif target < SortedList[mid]:
return BinarySearch2(target, SortedList, left, mid-1)
elif target > SortedList[mid]:
return BinarySearch2(target, SortedList, mid+1, right)
else:
return -1
SortedList = [1,2,3,4,5,7,8]
res = BinarySearch2(5, SortedList, 0, len(SortedList)-1)
print(res)