day16 递归函数
一、递归 函数
为什么要有函数,提高代码的可读性,避免重复的代码,提高代码的复用性
在函数中能用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 递归函数相关推荐
- Python菜鸟入门:day16编程学习
写在前面: 此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 传送门: day01基础知识 day02知识分类 day03 ...
- 递归函数 集合 列表 元组
#递归函数 <1>什么是递归函数 通过前面的学习知道一个函数可以调用其他函数. 如果一个函数在内部不调用其它的函数,而是自己本身的话,这个函数就是递归函数. 一个递归函数必定会有一个基线条 ...
- python 函数递归一次增加一次变量_python3--函数(函数,全局变量和局部变量,递归函数)...
1.1函数 1.1.1什么是函数 函数就是程序实现模块化的基本单元,一般实现某一功能的集合. 函数名:就相当于是程序代码集合的名称 参数:就是函数运算时需要参与运算的值被称作为参数 函数体:程序的某个 ...
- runaway深度递归函数测试及相关汇编指令
这是一个深度递归的例子. #include <stdio.h> #include <stdlib.h>int recurse(int x) {int a[1<<15 ...
- Python 2.4 递归函数
递归函数 在函数内部,可以调用其他函数.如果一个函数在内部调用本身,这个函数就是递归函数. 举个例子:计算阶乘n!=1*2*3*4*5*...*n,用函数fact(n)表示,可以看出 fact(n)= ...
- Python进阶之递归函数的用法及其示例
作者 | 程序员adny 责编 | 徐威龙 封图| CSDN│下载于视觉中国 出品 | AI科技大本营(ID:rgznai100) 本篇文章主要介绍了Python进阶之递归函数的用法及其示例,现在分 ...
- 面试彩蛋1:斐波那契数列用递归函数、循环函数实现
题目也可改为:将递归函数改为循环函数 写出下列函数的实现方法 1.使用递归函数实现 int Fib(int n){if(n==0) return 0; else if(n==1) return 1; ...
- python中递归函数的实例_Python 递归函数详解及实例
Python 递归函数 如果一个函数体直接或者间接调用自己,那么这个函数就称为递归函数.也就是说,递归函数体的执行过程中可能会返回去再次调用该函数.在python里,递归函数不需要任何特殊的语法,但是 ...
- python开发函数进阶:递归函数
一,什么叫递归 #递归 #在一个函数里调用自己 #python递归最大层数限制 997 #最大层数限制是python默认的,可以做修改 #但是我们不建议你修改 例子和尚讲故事 1 #!/usr/bin ...
最新文章
- java fork_浅谈Java的Fork/Join并发框架
- java命名$_java命名规范
- JavaScriptjQuery.查询DOM元素
- 机器学习-学习资源整理
- 实验——Windows常用网络测试命令
- php基础:查询程序运行时间并且把科学计数法转换成正常数字
- 【转载】图片 CSS:怎样才能 “响应式 + 固定宽高比例”?
- 江苏省计算机c语言考试题库,2020上半年江苏省计算机等级考试辅导教程:二级C语言上机考试题库...
- 无损1080i到1080p是如何制作的
- MATLAB 程序暂停的方法
- Matlab-有限单元法-2D梁单元的刚度矩阵组装(曾攀)
- oppo手机android文件夹,使用OPPO手机,这3个功能一定要关闭,不然你的手机会越来越卡...
- Androidg 改变CheckBox下的选中与未选中图片
- 一个30岁工控人的自白
- Signatures and Zero-Knowledge Proofs
- 容联荣膺「金融AI技术引领奖」,助力金融机构搭建智能交互中心
- 关于使用google map实现周边搜索的功能
- Jenkins 流水线语法 02 片段生成器和声明式语法生成器
- HTTP请求方法、GET和POST的区别
- 两个基于爬虫的项目: Kiwix ArchiveBox
热门文章
- scrum回顾_Scrum和SAFe之间有什么不同
- 荣耀手机现在是鸿蒙,荣耀适配鸿蒙最新消息出现,华为不会让大家失望的
- 电子计算机原理讲义,计算机原理讲义
- mysql ef sql语句_EF to MySQL 的 Database.ExecuteSqlCommand 和 SqlQuery
- python语音翻译软件下载_python软件翻译
- 无法使用_解决kali linux 2020 安装完后发现无法使用 ifconfig
- php点号的意思,[PHP] - 逗号和点号的区别
- 进程创建函数fork()和vfork()
- 和12岁小同志搞创客开发:手撕代码,做一款火焰报警器
- 【Pandas库】(3) DataFrame的创建方法及基本操作