Prthon3 递归函数

递归函数

 

定义:

1、在一个函数里再调用这个函数本身、

2、有明确的结束条件

 

递归函数的最大深度

1、理论上,官方文档说明是1000

2、实际测试是998

检测方法:

def foo(n):
    print(n)
    n += 1
    foo(n)
foo(1)

 

 3、最大深度可以修改,修改命令:(不建议修改)

import sys
sys.setrecursionlimit(10000000)  # 修改递归的最大层次
def foo(n):
    print(n)
    n += 1
    foo(n)
foo(1)

 

 

递归的应用:

 

#递归遍历目录下所有文件

import os
def read(filepath, n):
    files = os.listdir(filepath) # 获取到当前文件夹中的所有文件
    for fi in files: # 遍历文件夹中的文件, 这里获取的只是本层文件名
        fi_d = os.path.join(filepath,fi) # 加如文件夹 获取到文件夹+文件
        if os.path.isdir(fi_d): # 如果该路径下的文件是文件夹
            print("\t"*n, fi)
            read(fi_d, n+1) # 继续进行相同的操作
        else:
            print("\t"*n, fi) # 递归出来. 最终在这里隐含着return
 
read('../python_s14/', 0)
# 二分查找

def search(num,l,start=None,end=None):
    start = start if start else 0
    end = end if end else len(l) - 1
    mid = (end - start)//2 + start
    if start > end:
        return None
    elif l[mid] > num :
        return search(num,l,start,mid-1)
    elif l[mid] < num:
        return search(num,l,mid+1,end)
    elif l[mid] == num:
        return mid

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(search(66,l))

 

#递归实现三级菜单

def threeLM(dic):
     while True:
        for k in dic:print(k)
        key = input('input>>').strip()
        if key == 'b' or key == 'q':return key
        elif key in dic.keys() and dic[key]:
            ret = threeLM(dic[key])
            if ret == 'q': return 'q'

 threeLM(menu)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值