'''
递归:
下面的代码都是每次先扒拉出去第一个元素
之后就不用管第一个了
无限去分解 除去1第一个的右半部分
'''
def sum(list):
if list == []:
return 0
return list[0] + sum(list[1:])
'''计算列表中的元素总个数'''
def right_count(list):
if list == []:
return 0
return 1 + right_count(list[1:]) # 左边是1 ,最后单个元素恰好 1+0=1个元素
def find_big(list):
if list == []:
return -9999999 # 可能负数是最大
return max(list[0], find_big(list[1:]))
'''递归版二分查找'''
def binary_search(list, target, low, high):
mid = (low + high) // 2
guess = list[mid]
if guess < target:
low = mid + 1 # if elif里面写成 return(list, target, mid+1, high)也可以
elif guess > target:
high = mid - 1
else:
return '找到了,下标为', mid
'''二分查找只返回一个常数固定下标 非常简单;'''
return binary_search(list, target, low, high) # 递归内部参数类似引用!会变的!
3. 递归
最新推荐文章于 2023-08-22 11:48:19 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)