聊聊递归函数和二分法
递归函数
什么是递归函数?
"""递归就是直接或者间接调用自己的函数就是递归函数"""
递归函数的优点和缺点
优点:
- 可以简化代码,使程序更加简洁。
- 可以解决一些复杂的问题,比如数学上的阶乘、斐波那契数列等。
缺点:
- 可能会导致栈溢出,因为每次调用函数都需要占用一定的内存空间。
- 可能会导致程序效率低下,因为需要多次进行函数调用。
练习题:
l = [1, [2, [3, [4, [5, [6, [7, [8, [9, [10, [11, [12, [13]]]]]]]]]]]]]
# 给打印出列表中的所有元素值,只打印除列表之外的元素,如果是列表不打印
#使用循环从列表中取出每个元素进行判断,如果该元素不是列表,则直接打印其值;
如果是列表,则不打印。
最后得到的输出结果为:1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13。
# for i in l:
# # 判断是不是列表
# if type(i) is int:
# print(i)
# else:
# # 说明是列表
# # 继续循环
# for j in i:
# # 判断j是不是列表
# if type(j) is int:
# print(j)
# else:
# # 说明是列表
# # 继续循环
# for k in j:
# # 判断k是不是列表
# if type(k) is int:
# print(k)
# else:
# ...
def get_num(l):
for i in l:
if type(i) is int:
print(i)
else:
get_num(i)
get_num(l)
算法之二分法
什么是算法?
二分法是一种高效的查找算法,通常应用于有序的列表或数组中。
具体来说,它将目标值与列表中间的元素进行比较,并根据比较结果排除掉目标值不可能存在的那一半元素,从而使查找范围缩小一半。
例如,假设我们要在一个有序数组中查找某个特定的数字。首先,我们会找到数组的中间元素并将其与目标值进行比较。如果中间元素等于目标值,那么查找成功;否则,如果中间元素大于目标值,就在左半边继续查找,反之则在右半边查找。
重复上述步骤直到找到目标值或者确定目标值不存在。
总结:
'''处理问题的高效办法'''
常见的算法:
···
二分法:查找数据的
冒泡算法:排序的
选择排序:排序的
...
数据结构相关的:
'''二分法的使用'''
l = [11, 2, 3,44, 567,34,78,89,111,23,34,45,56,78,66]
ll = [1,2,3,4,5,6,7,8,66,67,68,90,100,110,120]
# 找列表l中有没有66这个数字
"""for循环遍历,然后一个一个的比较"""
for i in l:
if i == 66:
print('在')
break
标签:递归函数,元素,列表,二分法,查找,目标值
From: https://www.cnblogs.com/huangchunfang/p/17447103.html