以下为我编写的练习递归函数,如果存在问题和可以优化的点请大家指正
4.1请编写前述sum 函数的代码
def sum(a):
if len(a) == 0:
return 0
return a.pop() + sum(a)
4.2编写一个递归函数来计算列表包含的元素数
def count(a):
if len(a) == 0:
return 0
a = a[1:]
return 1 + count(a)
4.3找出列表中最大的数字
def FindMax(a):
if len(a) == 0:
return 0
return max(a.pop(), FindMax(a))
4.4还记得第1章介绍的二分查找吗?它也是一种分而治之算法。你能找出二分查找算法的基线条件和递归条件吗?
def search(List, target, low, high):
low = low
high = high
mid = int((low + high) / 2)
if List[mid] == target:
return mid
elif low == high:
return None
elif List[mid] < target:
low = mid + 1
elif List[mid] > target:
high = mid - 1
return search(List, target, low, high)