# 使用递归编写斐波那契数列
#1,1,2,3,5,8,13,21,24
# def fibo(k):
# """
# k 代表位置序号 1开始
# """
# assert k > 0, 'k值必须大于0'
# if k in [1,2]:
# return 1
# # # 要求的数的前面的那个数
# # before1 = fibo(k-1)
# # # 要求的数的前面的前面的那个数
# # before2 = fibo(k-2)
# # res = before1 + before2
# # return res
# return fibo(k-1)+fibo(k-2)
# print(fibo(9))
#----------------------------------------------
# #使用循环实现斐波那契数列
# #1,1,2,3,5,8,13,21,24
# def fibo(k):
# assert k > 0, 'k值必须大于0'
# if k in [1,2]:
# return 1
# before1,before2 = 1,1
# for _ in range(3,k+1): # 没有用到i可以用_代替
# temp = before1
# res = before1+before2
# before1 = res
# before2 = temp
# return res
# print(fibo(9))
#--------------------------------------------------
# 二分查找
# 1,生成数据
from random import randint,choice
data = [randint(1,100) for _ in range(10)]
# 随机选择一个
target = choice(data)
data = sorted(data)
print('有序数组是:',data)
print("要查找的目标值:",target)
def bin_search_recusion(left,right,data_list,target):
"""
left:左边的序号
right:右边的序号
data_list:要查找的列表
target:要查找的那个数
"""
#求中间序号值
mid = int((left + right)/2)
if data_list[mid] == target:
return mid
elif data_list[mid] < target:
return bin_search_recusion(mid+1,right,data_list,target)
else:
return bin_search_recusion(left,mid-1,data_list,target)
res = bin_search_recusion(0, len(data)-1, data, target)
print(res)
Python——递归
最新推荐文章于 2023-05-15 21:03:40 发布