专栏首页python3Python_递归

Python_递归

递归:一种直接直接或者间接调用自身算法的过程

递归在调用的过程中,是在上一层循环还没有结束直接进入下一层,多层嵌套调用实现调用

例1:

 1 def func(n):
 2     print(n)
 3     if n > 1:
 4         t = func(n / 2)
 5         print('T', t)                        # 当循环结束,会一层一层退出循环,退出一层打印一层
 6     else:
 7         print('已经是最小了')
 8     print('N', n)                             
 9     return n                                # 返回n 用于观察 T 退出循环
10 func(100)

num

结果:

100
50.0
25.0
12.5
6.25
3.125
1.5625
0.78125
已经是最小了
N 0.78125
T 0.78125
N 1.5625
T 1.5625
N 3.125
T 3.125
N 6.25
T 6.25
N 12.5
T 12.5
N 25.0
T 25.0
N 50.0
T 50.0
N 100

result

例2:裴波那契数列:(用递归实现)(0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987)

1 def num(x, y, stop):
2     if x+y < stop:                    # 递归数列结束值,如果没有条件限制会直接报错
3                                             # 因为过度的递归会造成栈溢出
4         z = x + y
5         print(z)
6         num(y, z, stop)
7 num(0, 1, 1000) 

num

结果:

1
2
3
5
8
13
21
34
55
89
144
233
377
610
987

result

 二分算法:

 1 def binary(binary_para, search):
 2     bi = int(len(binary_para)/2)             # 分为两部分 bi 为下标
 3     if search == binary_para[0]:             # 判断传入数是否为第一个
 4         print('列表里存在,并且这是列表第一个数: %s' % search)
 5     elif len(binary_para) > 1:                  # 利用递归不断二分
 6         if binary_para[bi] > search:
 7             print('分段值(前):', binary_para[bi])              # 打印分段的值
 8             binary(binary_para[:bi], search)
 9         elif binary_para[bi] < search:
10             print('分段值(后):', binary_para[bi])
11             binary(binary_para[bi:], search)
12         else:
13             print('你找到了,列表里有这个数!!')
14 
15     else:
16         print('这个列表里 没有 这个数!!')
17 
18 
19 if __name__ == '__main__':             # 在自己.py文件里,可以运行,其他文件访问不运行此方法
20     size = list(range(4, 300000, 10))         # 区间(4,300000)间断10个数的列表
21     # binary(size, 1)
22     binary(size, 12138)

binary

结果:

分段值(前): 150004
分段值(前): 75004
分段值(前): 37504
分段值(前): 18754
分段值(后): 9374
分段值(前): 14064
分段值(后): 11714
分段值(前): 12884
分段值(前): 12294
分段值(后): 12004
分段值(前): 12144
分段值(后): 12074
分段值(后): 12104
分段值(后): 12124
分段值(后): 12134
这个列表里 没有 这个数!!

result

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • python3------基础语法

      下划线命名法(python中推荐使用):单词都使用小写字母,单词与单词之间使用_下划线连接 

    py3study
  • python学习之变量类型

      变量是保存在内存中的值,根据变量类型开辟不同的内存空间且只允许符合该数据类型的数据才可以被存储在该内存空间中

    py3study
  • Python基础:for、while循环

    条件控制循环,while后面的condition是真,执行代码块;假,退出循环。 可以使用break,强制退出循环。 使用else,运行while正常结束时执行...

    py3study
  • 使用Python操作机器人聊天

    萌新偶然发现一个好玩的东西 使用Python和机器人聊天 效果 ? 工具 图灵机器人API itchat(提前安装) 准备 自己需要去图灵机器人注册账号,拿到A...

    小歪
  • 【大数据周记】一周大数据News总结(0907-0913)

    1.四位女生用"刷脸支付"改变传统金融 人脸识别技术能带来什么?用户需来到银行,当面核实身份,才会给予办理。若利用人脸识别,该环节就能大大简化。它通过“看脸”...

    数说君
  • 海康萤石摄像头C3W的Demo使用笔记(一)

    海康萤石摄像头提供了第三方开发的SDK套件。各个模块选择的网址是:https://open.ys7.com/bbs/supportcenter.html#ser...

    用户5935416
  • [Linux] deepin系统添加PHP仓库源出错Error: could not find a distribution template for Deepin/stable

    aptsources.distro.NoDistroTemplateException: Error: could not find a distributio...

    陶士涵
  • [红日安全]代码审计Day7 - parse_str函数缺陷

    文中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途以及盈利等目的,否则后果自行承担!(来源:红日安全)

    红日安全
  • ElasticSearch核心知识总结(一)es的六种搜索方式和数据分析

    GET /ecommerce/product/_search { "query": { "match": { "name": "yag...

    老梁
  • 信息泄露三年多:美人事管理局仍有1/3安全措施未能整改到位

    根据美国政府问责办公室(GAO)向国会提交的最新报告,在 2015 年发生大规模的数据泄露事件后,美国人事管理局(OPM)仅落实了 80 项信息安全建议的 64...

    周俊辉

扫码关注云+社区

领取腾讯云代金券