python 15 days

python 15 days

递归函数和二分查找

递归函数:

自己调用自己。

import sys
sys.setrecursionlimit(100000)
def func1():
    print(666)
    func1()
func1()
习题展示
666
666
666
666
666
666
666
666
666
666
666
666
666
666........
循环到998次停止
结果展示

默认最大递归深度为998

count = 0
def func1(n):
    n += 1
    print(n)
    func1(n)
func1(count)
例题展示
1
2
3
4
5
........
996
997
998
结果展示

 

def age(n):
    if n == 1:
        return 23
    else:
        return age(n-1) + 2

print(age(4)) # 23 + 2 + 2 + 2
例题展示
29
结果展示

 

二分查找:

用代码写的计算方式。

二分查找是最简单的算法,比较经典的算法。

1,数字序列,有序,不重复。

l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88]

print(l.index(66))
例题展示
17
结果展示

 

l = [2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88]
count = 0
for i in l:
    if i == 66:
        print(count)
    count += 1
for i in range(len(l)):
    if l[i] == 47:
        print(i)
        break
#
else:
    print('找不到....')
例题展示
17
找不到....
结果展示

 

二分查找的代码展示

目标值:aim = 66
寻找中间索引: min_index = len(l) // 2
aim 与 中间索引对应的值进行比较
    aim > l[min_index]:
        l[min_index+1:]
    aim < l[min_index]:
        l[:min_index-1]
    aim == l[min_index]
        return min_index
例题

 

找例题中的索引位置:如下

l1 = [1, 3, 5, 7, 8, 10, 11]
def binary_search(li,aim):  # 1次:[1, 3, 5, 7, 8, 10, 11] aim 8      2次 :li = [ 8, 10, 11]  8
    mid_index = len(li) // 2  # 1次:min_index: 3    2 次:min_index 1    3次:0

    if aim > li[mid_index]:  # 1次:8 > 7
        return binary_search(li[mid_index+1:], aim) # [ 8, 10, 11]  8

    elif aim < li[mid_index]:  # 2 次:8 < 10
        return binary_search(li[:mid_index], aim)  # 3次: [8] 8

    elif aim == li[mid_index]:
        return mid_index
    else:
        return None
print(binary_search(l1,8))
例题
0
找到索引的值为0
结果展示

 

posted @ 2018-06-05 21:11  鞠先生  阅读(97)  评论(0编辑  收藏  举报