Python基础入门----递归

Python基础语法全攻略:从变量到递归,快速入门秘籍 Python是一种简单易学的编程语言,适合初学者和爱好者。本文将介绍Python基础语法,包括变量、数据类型、条件语句、循环等,帮助你快速入门并理解这些重要概念。 阅读详情

Python Recursion

In this article, you will learn to create a recursive function; a function that calls itself.

 

Table of Contents

Python 递归

在这篇文章,你将学习添加一个递归函数;函数可以调用自己。

 

表格内容

  • 在Python里什么是递归?
  • Python递归函数
  • 递归的优点
  • 递归的缺点

What is recursion in Python?

Recursion is the process of defining something in terms of itself.

A physical world example would be to place two parallel mirrors facing each other. Any object in between them would be reflected recursively.

在Python里什么是递归?

递归是在自己本身定义一些东西的程序。

一个物理世界的例子像放置2面平行的镜子面对面。任何他们间的对象将会递归反射。


Python Recursive Function

We know that in Python, a function can call other functions. It is even possible for the function to call itself. These type of construct are termed as recursive functions.

Following is an example of recursive function to find the factorial of an integer.

Factorial of a number is the product of all the integers from 1 to that number. For example, the factorial of 6 (denoted as 6!) is 1*2*3*4*5*6 = 720.

Python递归函数

我们知道,函数能调用其它函数。它甚至可能调用函数本身。这类型的购置称为递归函数。

以下是查找一个整数阶乘递增函数的例子。

数字阶乘是1到这个数的整数乘积。例如,这个6的阶乘(代表为6!)是1*2*3*4*5*6=720.


Example of recursive function

# An example of a recursive function to
# find the factorial of a number

def calc_factorial(x):
    """This is a recursive function
    to find the factorial of an integer"""

    if x == 1:
        return 1
    else:
        return (x * calc_factorial(x-1))

num = 4
print("The factorial of", num, "is", calc_factorial(num))

 

In the above example, calc_factorial() is a recursive functions as it calls itself.

When we call this function with a positive integer, it will recursively call itself by decreasing the number.

递归函数的例子

In [1]: def calc_factorial(x):
   ...:     """This is a recursive function
   ...:     to find the factorial of an integer"""
   ...:     if x == 1:
   ...:         return 1
   ...:     else:
   ...:         return(x * calc_factorial(x-1))
   ...:     

In [2]: num = 4

In [4]: print("The factorial of",num ,"is",calc_factorial(num))
The factorial of 4 is 24

在上面的例子,calc_factorail()是一个递归函数因为它调用它自己。

当我们调用这个函数并带上一个位置函数,它将递减一个数再调用自己。


Each function call multiples the number with the factorial of number 1 until the number is equal to one. This recursive call can be explained in the following steps.


calc_factorial(4)              # 1st call with 4
4 * calc_factorial(3)          # 2nd call with 3
4 * 3 * calc_factorial(2)      # 3rd call with 2
4 * 3 * 2 * calc_factorial(1)  # 4th call with 1
4 * 3 * 2 * 1                  # return from 4th call as number=1
4 * 3 * 2                      # return from 3rd call
4 * 6                          # return from 2nd call
24                             # return from 1st call

Our recursion ends when the number reduces to 1. This is called the base condition.

Every recursive function must have a base condition that stops the recursion or else the function calls itself infinitely.

每次函数调用这个数都乘以1的阶乘指导这个数等于1.这个递归调用的解释以下步骤解释。


calc_factorial(4)              # 1st call with 4
4 * calc_factorial(3)          # 2nd call with 3
4 * 3 * calc_factorial(2)      # 3rd call with 2
4 * 3 * 2 * calc_factorial(1)  # 4th call with 1
4 * 3 * 2 * 1                  # return from 4th call as number=1
4 * 3 * 2                      # return from 3rd call
4 * 6                          # return from 2nd call
24                             # return from 1st call

Advantages of Recursion

  1. Recursive functions make the code look clean and elegant.
  2. A complex task can be broken down into simpler sub-problems using recursion.
  3. Sequence generation is easier with recursion than using some nested iteration.

 递归的优点

  1. 递归函数能使代码看起来干净优雅。
  2. 使用递归能使一个复杂任务被分解常简单的子问题
  3. 序列生成使用递归比使用一些内嵌迭代更简单。

Disadvantages of Recursion

  1. Sometimes the logic behind recursion is hard to follow through.
  2. Recursive calls are expensive (inefficient) as they take up a lot of memory and time.
  3. Recursive functions are hard to debug.

 递归的缺点

  1. 有时候递归的背后的逻辑是很难理解的。
  2. 递归调用花费高(效率低),因为他们占用很多内存和时间。
  3. 递归函数很难调试。

Check out these examples to learn more:

05_python_recursive 文章目录递归简介整数转换为任意进制递归图示turtle module分形树谢尔宾斯基Sierpinski三角形递归应用汉诺塔探索迷宫动态规划分治策略优化问题和贪心策略找零兑换的递归算法找零兑换的动态规划算法动态规划案例分析--博物馆大盗动态规划算法递归算法 递归简介 给定一个列,返回所有数的和 全括号表达式 数列的和 = 首个数 + 余下数列的和 def listsum(numlist)... 阅读详情

相关推荐

利用makehumancommunity导入人体模型到COMSOL里(需要solidwork)

#makehumancommunity #solidwork #COMSOL

qq_41227634的博客 2130

python递归函数

python递归函数:Recursive Function。 通俗一点说,递归函数的意思就是在函数内部调用函数本身。 归纳了递归函数的几个特点: 1、定义递归函数,要先试着去找到让函数终止的条件。 2、函数会通过不断的调用自身,实现算法的目的。 3、递归函数过深的调用会导致栈溢出,这一点要小心。 以下举了几个例子说明递归函数是如何实现的: 一、需求:1+2+3+4+…+100=? ...

房馥的技术博客 943

华大HC32F460串口超时中断+DMA收发实战:从STM32迁移的避坑指南

本文为从STM32迁移至华大HC32F460的开发者提供了串口DMA收发的实战避坑指南。核心在于理解HC32F460以串口接收超时中断替代空闲中断的机制,并调整DMA配置策略:DMA应设置为由串口接收事件持续触发搬运,超时中断仅负责通知和重置DMA,从而实现高效可靠的数据收发。

weixin_29175469的博客 80

解释Python中的递归锁(recursive lock)是什么,以及它在多线程中的应用。解释Python中的描述符(Descriptor)是什么,举例说明其用法。

在这个例子中,recursive_function 函数对一个共享资源进行递归访问,并使用递归锁确保线程在递归调用中正确获取和释放锁。在这些情况下,同一线程需要在不同的调用层次中获取相同的锁,递归锁能够确保线程对锁的嵌套使用是安全的。在 Python 中,描述符(Descriptor)是一种实现了特定协议的对象,它可以被用作类的属性,并允许对这些属性进行更灵活的控制。复杂算法: 在某些复杂的算法中,多个层次的函数可能需要访问共享资源,递归锁能够有效地管理这种情况,确保资源的正确使用。

qiuyehuanghun的博客 1446

PythonStudy——递归 Recursive

递归删除的思路 def delete_dir(folder): for path in os.listdir(folder): # 如果path是文件夹 delete_dir(path) # 如果是文件os.remove(path) pass # for走完了代表folder内部删空了,可以删folder ...

329

python编程】递归函数

通过递归,一个问题可以被分解成一个或多个相同类型的子问题,然后逐步求解这些子问题,最终得到原问题的解。递归函数在解决一些问题时非常有用,如树的遍历、图的搜索和复杂的数学计算等。因此,在使用递归函数时,应谨慎选择合适的情况,并确保递归的终止条件和问题规模的缩小。否则,我们将问题分解为更小的子问题,并使用修改后的参数来调用相同的函数(递归调用)。达到递归基(值为 0)时,递归调用终止,并返回 1。然后,在递归调用的结果上进行必要的处理,并将结果返回。如果满足,就返回基本情况的值,这是递归的终止条件。

314

recursive 变量名含义与常见用法详解

在代码里如果有人把变量、函数、类、宏、文件名等起名叫 recursive(或加上 recursive_xxx、is_recursive、use_recursive 之类的前缀/后缀),通常只是作者想借这个单词表达“这个东西和递归算法/递归调用有关”。下面分几个角度详细说明。“recursive”并不是一个特定的编程语言里的关键字,而是一个英语单词,直译成中文是“递归的”。

Leon_Jinhai_Sun的博客 651

python中什么是递归_Python基础入门----递归

Python RecursionIn this article, you will learn to create a recursive function; a function that calls itself.Table of ContentsPython 递归在这篇文章,你将学习添加一个递归函数;函数可以调用自己。表格内容在Python里什么是递归Python递归函数递归的优点递归的缺...

weixin_42465030的博客 1175

Python递归函数基础入门

转自:微点阅读https://www.weidianyuedu.com/content/1817173899226.html 在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。 举个例子,我们来计算阶乘n! = 1 x 2 x 3 x ... x n,用函数fact(n)表示,可以看出: fact(n) = n! = 1 x 2 x 3 x ... x (n-1) x n = (n-1)! x n = fact(n-1) x n 所以,fact(n)可以表示..

ysds20211402的博客 154

Python基础入门之函数三之递归函数

p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px 'Heiti SC Light'; color: #831100} p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px 'Heiti SC Light'; min-height: 14.0px} p.p3 {margin: 0.0px 0.0p

hbblzjy的博客 1640

Python基础入门23-24(递归

**#Python入门23-24** 知识点: 0.斐波那契数列实现: (1)迭代: (2)递归: 但是当n很大时,迭代会比递归快很多很多。 1.递归求解汉诺塔 可以分为三个步骤: (1)将前63个盘子从x移到以上。 (2)将最底下的第64个盘子从x移到z上。 (3)将Y上的63个盘子移动到z上。 问题1:将x上的63个盘子借助z移到Y上 (1)将前62个盘子从x移到z上。 (2)将最底下的...

weixin_44167894的博客 200

Python 递归函数 - Python基础入门教程

目录 一.Python 递归函数案例 1.Python 递归函数案例一 2.Python 递归函数案例二 3.Python 递归函数案例三 二.Python 递归函数总结 三.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> Python 基础入门 一个函数在函数体内部调用自己,这样的函数称为递归函数,递归的次数在 Python 是有限制的,默认递归次数是 997 次,超过 997 次会报错:RecursionError. 一.Python 递归函数

猿说编程 797

python基础入门——图解汉诺塔,用Python实现经典递归

...

qq_35690171的博客 296

基础入门python递归-从阶乘到斐波那契

本文介绍了递归算法的基本概念及其应用。递归通过函数调用自身将问题分解为更小的子问题,最终组合得到解。文章以阶乘和斐波那契数列为例,展示了递归的实现方式,并指出需要明确终止条件以避免无限递归。同时提到递归可能存在的性能问题及优化方法(如记忆化)。最后总结了递归适用的三类问题特征:可分解为相似子问题、子问题解可组合、存在基本情况。文中包含Python代码示例,帮助理解递归的实现过程。

wx_hyfg52zy3397的博客 588

第一章 Python基础入门递归和高阶函数

Python系列学习在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。必须有一个明确的结束条件每次进入更深一层的递归时,问题规模相比上次递归都应有所减少。递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出。# 递归案例1:不断的除以2。定义一个函数,调用时调用回自身。

boranyueshijie的博客 225

python递归函数--含尾递归

# -*- coding: UTF-8 -*- # 使用递归函数需要注意防止栈溢出。在计算机中,函数调用是通过栈(stack)这种数据结构实现的, # 每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。 # 由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出 __author__ = 'Administrator' #下面的函数是求阶乘和 def fact(n):

python的博客 3226

Python实现阶乘函数的两种方法

1. 迭代(Iterative) 迭代思想的核心:for循环语句 & range内置函数 计算顺序:从小到大 def factorial(number): product = 1 for i in range(number): product = product * (i+1) return product 2. 递归(Recursive) 递归思...

CaptainColor的博客 1万+

DBA校招笔试核心考点解析:从索引原理到高可用架构

数据库系统是现代互联网应用的基石,而DBA则是保障数据库稳定高效运行的关键角色。理解索引、事务、锁机制等核心概念,是深入掌握数据库原理的起点。以MySQL为例,其InnoDB存储引擎通过B+树实现高效查询,通过MVCC与redo/undo log保障事务的ACID特性。掌握SQL执行计划与慢查询优化,能显著提升系统性能。在高并发业务场景下,主从复制、读写分离以及分库分表等架构设计成为必备技能。本文以网易校招DBA笔试试卷为线索,系统梳理了数据库管理工程师笔试的核心知识点与解题思路,帮助求职者构建系统性知识框

weixin_33800463的博客 1032

python装饰器recursive_repr执行理解

recursive_repr(fillvalue=’,’) python装饰器的使用 其中recursive_repr装饰器的目的是防止递归,提供指定返回值fillvalue 在实例化Mylist为对象m后,再递归调用m.append(m),执行两次wrapper。原因是第一次执行wrapper后进入def __repr__后,有一个递归对象m,再执行wrapper。 from _thread import get_ident def recursive_repr(fillvalue=',,,'):

weixin_42190369的博客 438

python 学习第二十四天(同步锁和递归锁)

同步锁 给一段代码加了同步锁之后,在这段代码执行时只能有一个线程执行。 import time import threading def addNum(): global num #在每个线程中都获取这个全局变量 #num-=1 temp=num #print('--get num:',num ) time.sleep(0.1)#可以把时间调...

CZ505632696的博客 531

31省环境规制强度数据,含原始数据、测算方法、参考文献,2004-2022,excel版

31省份环境规制强度、工业污染治理完成投资、第二产业增加值,含原始数据、测算方法、参考文献,2004-2022,excel版21世纪以来,传统经济发展方式导致环境问题凸显,如污染排放增加、资源日渐枯竭、生态失衡等,经济发展与可持续发展上升为主要矛盾。面对日益恶化的环境质量,中国共产党第十八届五中全会提出“绿色发展”的核心理念,强调走绿色生产和绿色治理相结合的生态文明之路。如今,环境规制不仅要满足广大人民群众对绿水青山的需求,还应为我国经济发展提供一份助力,为经济健康有序发展保驾护航。实现绿色治理,改善环境质量的有效途径是实施行政命令型、经济市场型等环境规制政策或措施。而环境规制强度的提高会影响企业生产成本、资本劳动要素投入、生产规模等而对社会就业造成一定冲击。一、时间跨度:2004-2022年二、计算方法参考发表于核心期刊《中国软科学》中刘荣增(2021)、《数量经济技术经济研究》中胡洁(2023)的做法,利用工业污染治理投资完成额占第二产业比重衡量环境规制三、数据来源主要来源于国家统计局,祥见下文数据指标部分介绍四、数据指标附件 各省环境规制

上一篇: python基本入门----函数的参数
下一篇: Python基础入门----匿名/ Lambda函数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值