博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python基础 递归函数
阅读量:5112 次
发布时间:2019-06-13

本文共 2130 字,大约阅读时间需要 7 分钟。

递归函数

递归的定义——在一个函数里再调用这个函数本身

现在我们已经大概知道刚刚讲的story函数做了什么,就是在一个函数里再调用这个函数本身,这种魔性的使用函数的方式就叫做递归

刚刚我们就已经写了一个最简单的递归函数。.

归的最大深度——997

def foo(n):    print(n)    n += 1   #测试最大递归深度    foo(n)foo(1)
import sys                  #修改递归最大深度sys.setrecursionlimit(10000)n = 0def story():    global n    n += 1    print(n)    story()

如果递归次数太多,就不太适合使用递归来解决问题

缺点:占内存

优点:让代码变简单

''' 1    a       40     2    b       b比a大2岁3    c       c比b大2岁4    d     d比c大2岁age(4) = age(3) + 2 age(3) = age(2) + 2age(2) = age(1) + 2age(1) = 40已知a的年龄如何求出d的年龄'''def age(n):       if n == 4:        return 40    else:        return age(n+1)+2print(age(4))
#上面函数看不懂吧!下面我们拆分一下这个函数。def age(1):    if 1 == 4:        return 40    elif 1 > 0 and 1 < 4:        return age(1+1(3)) + 2     46        def age(2):    if 2 == 4:        return 40    elif 2 > 0 and 2 < 4:        return age(2+1(3)) + 2     44def age(3):    if 3 == 4:        return 40    elif 3 > 0 and 3 < 4:        return age(3+1(4)) + 2     42        def age(4):    if 4 == 4:        return 40    elif n > 0 and n < 4:        return age(n+1) + 2

二分查找算法

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]i = 0for num in l:    if num == 66:       #找出66的位置        print(i)    i+=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]def func(l,aim):    mid = (len(l)-1)//2    if l:        if aim > l[mid]:            func(l[mid+1:],aim)        elif aim < l[mid]:            func(l[:mid],aim)        elif aim == l[mid]:            print("bingo",mid)    else:        print('找不到')func(l,66)func(l,6)

 

#完善版二分查找算法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]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:            return find(l,aim,start = mid_index+1,end = end)        elif l[mid_index] > aim:            return find(l,aim,start=start,end=mid_index-1)        else:            return mid_index    else:        return '找不到这个值'        ret = find(l,66)print(ret)

 

转载于:https://www.cnblogs.com/soleZ/p/8242508.html

你可能感兴趣的文章
C++ 在继承中虚函数、纯虚函数、普通函数,三者的区别
查看>>
一次失败的项目经理招聘经验
查看>>
怎么保存退出vi编辑
查看>>
Java泛型的基本使用
查看>>
智力逻辑题
查看>>
SpringBoot前后端分离Instant时间戳自定义解析
查看>>
开发一个简单的 Vue 弹窗组件
查看>>
1076 Wifi密码 (15 分)
查看>>
rsync
查看>>
java中的IO操作总结
查看>>
noip模拟赛 党
查看>>
bzoj2038 [2009国家集训队]小Z的袜子(hose)
查看>>
Java反射机制及其Class类浅析
查看>>
Postman-----如何导入和导出
查看>>
面试题17:合并两个排序的链表
查看>>
Jmeter HTTPS接口测试的证书导入
查看>>
air开发中的requestedDisplayResolution 扫盲
查看>>
随机生成30道小学二年级四则远算题目
查看>>
python基础开发环境Pycharm的详细使用方法
查看>>
节点选取
查看>>