一、递归 函数

  为什么要有函数,提高代码的可读性,避免重复的代码,提高代码的复用性

在函数中能用return的不要print

1、递归的最大深度997

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

递归的最大深度

2、修改递归的最大深度

由此我们可以看出,未报错之前能看到的最大数字就是997.

 当然了,997是python为了我们程序的内存优化所设定的一个默认值,

 我们当然还可以通过一些手段去修改它:

import sys
sys.setrecursionlimit(2000)
n=0
def func():global nn+=1print(n)func()
func()
# 1997

修改递归的最大深度

3、递归的例子

例一:

现在你们问我,alex老师多大了?我说我不告诉你,但alex比 egon 大两岁。

你想知道alex多大,你是不是还得去问egon?egon说,我也不告诉你,但我比武sir大两岁。

你又问武sir,武sir也不告诉你,他说他比金鑫大两岁。

那你问金鑫,金鑫告诉你,他40了。。。

这个时候你是不是就知道了?alex多大

def age(n):if n==4:return 40else:return age(n+1)+2
print(age(1))
#46

年龄的递归

详细解析步骤:

4、总结:

在一个函数里面调用自己,默认的递归最大限度是1000(不要修改递归的最大限度)

往往递归都是和循环挂在一起的,人理解循环,神理解递归

二、二分查找算法

def find_2(l,aim,start=0,end=None):if end==None:end=len(l)-1if start<=end:mid=(end-start)//2+startif l[mid]>aim:ret=find_2(l,aim,start,mid-1)return retelif l[mid]<aim:ret=find_2(l,aim,mid+1,end)return retelse:return aim,midelse:print("找不到这个值")
l=[2,3,4,5,6,7,8,9,10,11,12,13,14,15]
print(find_2(l,6))

二分查找算法

例题:

1、阶乘的算法 4*3*2*1

def f(n):  if n==1:return 1else:return n*f(n-1)
print(f(4))

阶乘的算法

2、斐波那契数列

# 1,1,2,3,4,5,8,13...
# n=10
def fib(n):if n==1 or n==2:return 1else:return fib(n-1)+fib(n-2)
print(fib(10))

斐波那契数列

3、三级菜单:

menu = {'北京':{'海淀':{'五道口':{'sogo':{},'网易':{},'google':{}},'中关村':{'爱奇艺':{},'汽车之家':{},'youku':{},},'上地':{'百度':{},},},'昌平':{'沙河':{'汇德商厦老男孩':{},'北航':{},},'天通苑':{},'回龙观':{},},'朝阳':{'朝阳大妈' },'东城':{},},'上海':{'闵行':{"人民广场":{'炸鸡店':{}}},'闸北':{'火车战':{'携程':{}}},'浦东':{},},'山东':{'高丽':{}},}
def meu_3(menu):while True:for key in menu:print(key)choice=input("选择:")if choice=="q" or choice=="b":return choiceelif choice in menu and menu[choice]:borq=meu_3(menu[choice])if borq=="q":return "q"
meu_3(menu)

  

转载于:https://www.cnblogs.com/number1994/p/7995111.html

day16 递归函数相关推荐

  1. Python菜鸟入门:day16编程学习

    写在前面: 此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 传送门: day01基础知识 day02知识分类 day03 ...

  2. 递归函数 集合 列表 元组

    #递归函数 <1>什么是递归函数 通过前面的学习知道一个函数可以调用其他函数. 如果一个函数在内部不调用其它的函数,而是自己本身的话,这个函数就是递归函数. 一个递归函数必定会有一个基线条 ...

  3. python 函数递归一次增加一次变量_python3--函数(函数,全局变量和局部变量,递归函数)...

    1.1函数 1.1.1什么是函数 函数就是程序实现模块化的基本单元,一般实现某一功能的集合. 函数名:就相当于是程序代码集合的名称 参数:就是函数运算时需要参与运算的值被称作为参数 函数体:程序的某个 ...

  4. runaway深度递归函数测试及相关汇编指令

    这是一个深度递归的例子. #include <stdio.h> #include <stdlib.h>int recurse(int x) {int a[1<<15 ...

  5. Python 2.4 递归函数

    递归函数 在函数内部,可以调用其他函数.如果一个函数在内部调用本身,这个函数就是递归函数. 举个例子:计算阶乘n!=1*2*3*4*5*...*n,用函数fact(n)表示,可以看出 fact(n)= ...

  6. Python进阶之递归函数的用法及其示例

    作者 | 程序员adny 责编 | 徐威龙 封图| CSDN│下载于视觉中国 出品 |  AI科技大本营(ID:rgznai100) 本篇文章主要介绍了Python进阶之递归函数的用法及其示例,现在分 ...

  7. 面试彩蛋1:斐波那契数列用递归函数、循环函数实现

    题目也可改为:将递归函数改为循环函数 写出下列函数的实现方法 1.使用递归函数实现 int Fib(int n){if(n==0) return 0; else if(n==1) return 1; ...

  8. python中递归函数的实例_Python 递归函数详解及实例

    Python 递归函数 如果一个函数体直接或者间接调用自己,那么这个函数就称为递归函数.也就是说,递归函数体的执行过程中可能会返回去再次调用该函数.在python里,递归函数不需要任何特殊的语法,但是 ...

  9. python开发函数进阶:递归函数

    一,什么叫递归 #递归 #在一个函数里调用自己 #python递归最大层数限制 997 #最大层数限制是python默认的,可以做修改 #但是我们不建议你修改 例子和尚讲故事 1 #!/usr/bin ...

最新文章

  1. java fork_浅谈Java的Fork/Join并发框架
  2. java命名$_java命名规范
  3. JavaScriptjQuery.查询DOM元素
  4. 机器学习-学习资源整理
  5. 实验——Windows常用网络测试命令
  6. php基础:查询程序运行时间并且把科学计数法转换成正常数字
  7. 【转载】图片 CSS:怎样才能 “响应式 + 固定宽高比例”?
  8. 江苏省计算机c语言考试题库,2020上半年江苏省计算机等级考试辅导教程:二级C语言上机考试题库...
  9. 无损1080i到1080p是如何制作的
  10. MATLAB 程序暂停的方法
  11. Matlab-有限单元法-2D梁单元的刚度矩阵组装(曾攀)
  12. oppo手机android文件夹,使用OPPO手机,这3个功能一定要关闭,不然你的手机会越来越卡...
  13. Androidg 改变CheckBox下的选中与未选中图片
  14. 一个30岁工控人的自白
  15. Signatures and Zero-Knowledge Proofs
  16. 容联荣膺「金融AI技术引领奖」,助力金融机构搭建智能交互中心
  17. 关于使用google map实现周边搜索的功能
  18. Jenkins 流水线语法 02 片段生成器和声明式语法生成器
  19. HTTP请求方法、GET和POST的区别
  20. 两个基于爬虫的项目: Kiwix ArchiveBox

热门文章

  1. scrum回顾_Scrum和SAFe之间有什么不同
  2. 荣耀手机现在是鸿蒙,荣耀适配鸿蒙最新消息出现,华为不会让大家失望的
  3. 电子计算机原理讲义,计算机原理讲义
  4. mysql ef sql语句_EF to MySQL 的 Database.ExecuteSqlCommand 和 SqlQuery
  5. python语音翻译软件下载_python软件翻译
  6. 无法使用_解决kali linux 2020 安装完后发现无法使用 ifconfig
  7. php点号的意思,[PHP] - 逗号和点号的区别
  8. 进程创建函数fork()和vfork()
  9. 和12岁小同志搞创客开发:手撕代码,做一款火焰报警器
  10. 【Pandas库】(3) DataFrame的创建方法及基本操作