python限制递归次数(python最大公约数递归)

本文目录一览:

python 为什么要进行递归限制

因为递归的效率较低,如果不进行限制可能运行一个py文件会花费大量的时间

如何限制递归函数的次数

既然有次数限制,那就要传递限制数了

function add($a, $n=false){ //默认不限制次数

if($n !== false $n == 0) {

return;

}else {

$n–;

}

if ($a 99) {

$a = $a +2;

echo $a.”,”;

$a = add($a, $n);

}

return $a;

}

在python里递归最多达到多少次

这个要看你机器的配置和递归算法本身说需要的存储空间吧。递归是很占用寄存器空间的,如果你的寄存器空间足够大,哪递归多少次都无所谓。。。

Python 实现递归

一、使用递归的背景

先来看一个☝️接口结构:

这个孩子,他是一个列表,下面有6个元素

展开children下第一个元素[0]看看:

发现[0]除了包含一些字段信息,还包含了 children 这个字段(喜当爹),同时这个children下包含了2个元素:

展开他的第一个元素,不出所料,也含有children字段(人均有娃)

可以理解为children是个对象,他包含了一些属性,特别的是其中有一个属性与父级children是一模一样的,他包含父级children所有的属性。

比如每个children都包含了一个name字段,我们要拿到所有children里name字段的值,这时候就要用到递归啦~

二、find_children.py

拆分理解:

1.首先import requests库,用它请求并获取接口返回的数据

2.若children以上还有很多层级,可以缩小数据范围,定位到children的上一层级

3.来看看定义的函数

我们的函数调用:find_children(node_f, ‘children’)

其中,node_f:json字段

    children:递归对象

 以下这段是实现递归的核心:

   if items[‘children’]:

 items[‘children’]不为None,表示该元素下的children字段还有子类数据值,此时满足if条件,可理解为 if 1。

 items[‘children’]为None,表示该元素下children值为None,没有后续可递归值,此时不满足if条件,可理解为 if 0,不会再执行if下的语句(不会再递归)。

至此,每一层级中children的name以及下一层级children的name就都取出来了

希望到这里能帮助大家理解递归的思路,以后根据这个模板直接套用就行

(晚安啦~)

源码参考:

python为什么不支持尾递归

Python本身是不支持尾递归的(via),并且对递归次数有限制的,当递归次数超过1000次的时候,就会抛出“RuntimeError: maximum recursion depth exceeded”异常。

python函数高级

一、函数的定义

函数是指将一组语句的集合通过一个名字(函数名)封装起来,想要执行这个函数,只需要调用函数名即可

特性:

减少重复代码

使程序变得可扩展

使程序变得易维护

二、函数的参数

2.1、形参和实参数

形参,调用时才会存在的值

实惨,实际存在的值

2.2、默认参数

定义:当不输入参数值会有一个默认的值,默认参数要放到最后

2.3、 关键参数

定义: 正常情况下,给函数传参数要安装顺序,不想按顺序可以用关键参数,只需要指定参数名即可,(指定了参数名的就叫关键参数),但是要求是关键参数必须放在位置参数(以位置顺序确定对应的参数)之后

2.4、非固定参数

定义: 如你的函数在传入参数时不确定需要传入多少个参数,就可以使用非固定参数

# 通过元组形式传递

# 通过列表形式传递

# 字典形式(通过k,value的方式传递)

# 通过变量的方式传递

三、函数的返回值

作用:

返回函数执行结果,如果没有设置,默认返回None

终止函数运行,函数遇到return终止函数

四、变量的作用域

全局变量和局部变量

在函数中定义的变量叫局部变量,在程序中一开始定义的变量叫全局变量

全局变量作用域整个程序,局部变量作用域是定义该变量的函数

当全局变量与局部变量同名是,在定义局部变量的函数内,局部变量起作用,其他地方全局变量起作用

同级的局部变量不能互相调用

想要函数里边的变量设置成全局变量,可用global进行设置

五、特殊函数

5.1、嵌套函数

定义: 嵌套函数顾名思义就是在函数里边再嵌套一层函数

提示 在嵌套函数里边调用变量是从里往外依次调用,意思就是如果需要调用的变量在当前层没有就会去外层去调用,依次内推

匿名函数

基于Lambda定义的函数格式为: lambda 参数:函数体

参数,支持任意参数。

匿名函数适用于简单的业务处理,可以快速并简单的创建函数。

# 与三元运算结合

5.3、高阶函数

定义:变量可以指向函数,函数的参数可以接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数称之为高阶函数 只需要满足一下任意一个条件,即是高阶函数

接收一个或多个函数作为输入

return返回另一个函数

5.4、递归函数

定义:一个函数可以调用其他函数,如果一个函数调用自己本身,这个函数就称为递归函数

在默认情况下Python最多能递归1000次,(这样设计师是为了防止被内存被撑死)可以通过sys.setrecursionlimit(1500)进行修改

递归实现过程是先一层一层的进,然后在一层一层的出来

必须有一个明确的条件结束,要不然就是一个死循环了

每次进入更深层次,问题规模都应该有所减少

递归执行效率不高,递归层次过多会导致站溢出

# 计算4的阶乘 4x3x2x1

# 打印数字从1-100

5.5、闭包现象

定义:内层函数调用外层函数的变量,并且内存函数被返回到外边去了

闭包的意义:返回的函数对象,不仅仅是一个函数对象,在该函数外还包裹了一层作用域,这使得,该函数无论在何处调用,优先使用自己外层包裹的作用域

原创文章,作者:WSYNL,如若转载,请注明出处:https://www.506064.com/n/128728.html

(0)
WSYNLWSYNL
上一篇 2024-10-03
下一篇 2024-10-03

相关推荐

  • Java异常类全面解析

    Java程序在执行过程中,可能会遇到各种异常情况,比如程序运行时发生了空指针异常、文件读取异常等等。为了有效地处理这些异常情况,Java提供了异常处理机制。本文将从以下几个方面阐述…

    编程 2024-10-04
  • 解决noclassdeffounderror异常的方案

    一、概述 noclassdeffounderror异常是Java程序开发过程中常见的异常之一。当Java虚拟机(JVM)无法找到指定的类文件时,就会抛出noclassdeffoun…

    编程 2024-10-04
  • linuxapachemysql的简单介绍

    本文目录一览: 1、Linux下注册Apache与MySQL为系统服务 2、Linux下将Mysql和Apache加入到系统服务里的方法 3、Linux下查看Nginx、Apach…

    编程 2024-10-03
  • Docker架构详解

    一、Docker概述 Docker是一个开源的容器化平台,被广泛地应用于软件开发和部署。Docker的特性是快速、轻量级、可移植、安全,可以被用于构建和部署各种类型的应用。容器是D…

    编程 2024-10-04
  • 基于python的dbn(基于Python的金融分析与风险管理)

    本文目录一览: 1、各种编程语言的深度学习库整理大全! 2、Python 常用的标准库以及第三方库有哪些 3、基于Python 的云平台有哪些? 4、深度学习需要有python基础…

  • Java实现链表查询

    引言 链表,是一种常用的数据结构,是一种线性表,但是不像数组一样连续存储数据,链表中的元素可以存储在内存的任何地方,每个元素由一个存储该元素本身的节点和一个指向下一个元素的指针组成…

    编程 2024-10-04
  • js代码领域博主,js设计师

    本文目录一览: 1、js调用代码是什么意思? 2、htmlcssjs哔哩哔哩上哪个博主讲得好 3、自学前端,有什么好书推荐吗? 4、JS编程是什么意思? js调用代码是什么意思? …

    编程 2024-10-04
  • php伪异步实现(php 异步函数)

    1、php异步调试和线上调试网站程序 2、php如何实现脚本异步执行的方法具体分析 3、php 怎样实现异步处理接口 4、如何实现PHP异步调用或者说并行计算 php异步调试和线上…

    编程 2024-10-03
  • 如何隐藏cad图纸的背景线,cad背景辅助线怎么隐藏

    本文目录一览: 1、cad合并成一个整体如何把背面的线条隐藏 2、CAD中标注下面的线怎么隐藏? 3、cad背景怎么去掉网格线 4、cad怎么让不同颜色线条隐藏和显示 cad合并成…

    编程 2024-10-04
  • matlab ode45函数用法详解

    一、matlabode45函数概述 matlabode45函数是一种常用的数值解微分方程算法,用于解决各种类型的常微分方程组(ODEs)的初值问题。该函数使用一种常见的Runge-…

    编程 2024-10-04

发表回复

登录后才能评论