Python函数递归调用实现原理实例解析
作者:吃了好多肉 发布时间:2023-01-16 12:00:52
标签:Python,函数,递归,调用
函数的递归调用:
是函数嵌套调用的一种特殊形式
具体是指:
在调用一个函数的过程中又直接或间接地调用到了本身
# 直接调用本身
def func():
print('我是func')
func()
func()
# 函数会不断的运行永远不会结束,但Python不允许这种情况,会默认限制只能调1000次.
# 间接调用本身
def f1():
print('我是f1')
f2()
def f2():
print('我是f1')
f1()
f1()
# 此时也相当于直接调用本身,f1-->f2-->f1-->f2-->f1。。。同样会不断循环
递归不应该无限的调用下去,必须在满足某种条件下结束递归
# 写一个函数获取0-9
def f1(n):
if n == 10:
return
print(n)
n += 1
f1(n)
f1(0)
# 0 1 2 3 4 5 6 7 8 9
递归的两个阶段:
1、回溯:一层一层调用下去
2、递推:满足某种条件,结束递归调用,然后一层一层返回。
递归的应用:
例如打印出一个嵌套多层列表内的所有元素
li = [1,2,[3,4,[5,6,[7,8],9]]]
def func(l):
for i in l:
if type(i) is list:
func(i)
else:
print(i)
func(li)
来源:https://www.cnblogs.com/ChiRou/p/13443227.html
0
投稿
猜你喜欢
- 看下面的Java代码,目的是为了当i是3的时候,就不做输出,直接跳到下一个循环。int i = 0; 
- 在今天的设计中,排版常常被忽视,特别是被网页设计师忽视。这真是件遗憾的事情因为CSS可以做很多事情来控制我们的排版。也就是说,我们被局限于某
- 如何用我的国际域名做虚拟域名?config.asp<%Domain_URL = "intels.net&
- apache对php的支持是通过apache的mod_php5模块来支持的,这点与nginx不同。nginx是通过第三方的fastcgi处理
- 下面对实现页面定时跳转(也称倒计时跳转)做一下总结,各种定时跳转代码记录如下: (1)使用setTimeout函数实现定时跳转(如下代码要写
- Balloons(气球状提示)问题摘要气球状提示(Balloon)是一个小型的弹出窗口,用于通知用户出现非关键性问题或控件处于某种特殊情况。
- 使用 types 增强vscode中javascript代码提示功能微软的vscode编辑器是开发typescript项目的不二首选,其本身
- 中间件中间件是放在客户端和服务端的中间。 当你的客户端对某个接口发起一个请求,但是在到达接口2之前,这里是有一层中间件的处理。一般
- 1. ASCII 返回与指定的字符对应的十进制数; SQL> select ascii(A) A,ascii(a) a,ascii(0
- 一、深复制与浅复制列表是Python中自带的一种数据结构,在使用列表时,拷贝操作不可避免,下面简单讨论一下列表的深复制(拷贝)与浅复制首先看
- 这次讨论一下关于select元素的一个问题,其实很早以前我就碰到过关于select元素的问题,这次做网站又被问到同样的问题,就是:一般div
- 在进行ASP网站开发时,有时需在客户端调用MSSQL数据库的数据进行打印,若调用数据量小,可以通过在客户端运用FileSystemObjec
- 1、 Python中 sys.argv的用法解释:sys.argv可以让python脚本从程序外部获取参数,sys.argv是一个列表,可用
- 背景:在做项目时,经常会遇到这样的表结构在主表的中有一列保存的是用逗号隔开ID。如,当一个员工从属多个部门时、当一个项目从属多个城市时、当一
- 本文实例借鉴mvc模式,核心数据为model,维护1个矩阵,0表无雷,1表雷,-1表已经检测过。本例使用python的tkinter做gui
- If...Then...Else 语句的一种变形,即添加任意多个 ElseIf 子句以扩充 If...Then...Else 语句的功能,允
- 一、基本思想本文思想是基于用asp和DOM来读取和存储XML数据,并利用XML数据来存储留言信息,达到同用数据库存储数据的功能。二、XML留
- 用户体验已经是一个老生常谈的话题了。我非常赞同某位达人所说的,用户体验设计应该贯穿于产品从萌芽到出生的整个过程,产品原型、视觉设计、前端开发
- 如何制作一个股票滚屏显示面板?<html> <head> <script
- BIT[(M)]位字段类型。M表示每个值的位数,范围为从1到64。如果M被省略, 默认为1。TINYINT[(M)] [UNSIGNED]