python笔记(递归函数)

递归函数
https://www.processon.com/(作图)
1.最大递归深度默认是997
2.可以修改递归默认深度
例:

import sys
sys.setrecursionlimit(1000)

@递归缺点;占内存
@递归优点:让代码变简单
@逐次向下调用,返回值依次向上回归

例题:
1.二分查找算法 必须处理有序的列表

l = [2,3,4,5,6,8,10,12,13,15,16,17,19,22,25,27,29,34,37]
def find(l,aim,start = 0,end = None):
    end = len(l) if end is None else end
    mid_index = (end - start) // 2 + start
    if start <= end:
        if l[mid_index] < aim:
            find(l,aim,start = mid_index + 1,end = end)
        elif l[mid_index] > aim:
            find(l,aim,start = start,end = mid_index -1)
        else:
            print('找到了!',mid_index,aim)
    else:
        print('找不到这个值!')
find(l,7)

2.三级菜单代码

3.斐波那契(从结果往前推)

def fib(n):

    if n == 1 or n == 2:
        return 1
    return fib(n -1) +fib(n -2)    #双递归
print(fib(40))

4.阶乘

def func(n):
    if n == 1:                                      #由所传参数向向下推,推到最后的一个参数作为判断条件
        return 1
    return func(n-1)*n                              #由条件的性质可以尝试推测
print(func(8))

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_41433183/article/details/83618731
今日推荐