Python 函数的递归详解

目录
  • 1.1、递归函数的特点
  • 1.2 递归案例 ----- 计算数字累加
  • 总结

函数调用自身的 编程技巧 称为递归。

1.1、递归函数的特点

特点:

一个函数 内部 调用自己。

函数内部可以调用其他函数,当然在函数内部也可以调用自己。

代码特点:

1)、函数内部的 代码 是相同的,只是针对 参数 不同,处理的结果不同;

2)、当 参数满足一个条件 时,函数不再执行;

这个非常重要,通常被称为递归的出口,否则 会出现死循环!

def sum_number(num):
   print(num)
    # 递归的出口,当参数满足某个条件时,不再执行函数
    if num == 1:
        return
   # 自己调用自己
    sum_number(num - 1)

sum_number(3)

1.2 递归案例 ----- 计算数字累加

需求:

1)、定义一个函数 sum_numbers;

2)、能够接收一个 nums 的整数参数;

3)、计算 1 + 2 = num 的结果;

# 定义一个 函数 sum_numbers
# 能够接收一个 num  的整数参数
# 计算 1 + 2 + .... num的结果;
def sum_numbers(num):
   # 1.出口
    if num == 1:
        return 1
   # 数字的累加 num + 1 (1....num - 1)
    # 假设 sum_numbers 能够正确的处理 1...num - 1
    temp = sum_numbers(num - 1)
   # 两个数字的相加
    return num + temp

result = sum_numbers(2)
print(result)

提示:递归是一个 编程技巧,初次接触递归会高级有些吃力 在处理 不确定的循环条件时,例如:遍历整个文件目录的结构。

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!

(0)

相关推荐

  • python基础之递归函数

    # 递归满足的条件 # 1.自己调用自己 # 2.必须有一个明确的结束条件 # 优点:逻辑简单\定义简单 # 缺点:防止内存消耗过多,容易导致栈溢出,内存资源紧张,甚至内存泄漏事件发生 # 求阶乘 # 循环的方式去实现 def jiecheng(n): result=1 for item in range(1,n+1): result*=item pass return result #普通函数必须指定返回值 print('4的阶乘为{}'.format(jiecheng(4))) def di

  • python递归函数用法详解

    上期我们介绍了函数式编程,这期内容就是关于递归的函数内容,本期还是按照老规矩,给大家进行核心整理,内容通俗易懂,搭配实际应用,以供大家理解. 关于递归: 百度解释:是指函数/过程/子程序在运行过程序中直接或间接调用自身而产生的重入现象.在计算机编程里,递归指的是一个过程:函数不断引用自身,直到引用的对象已知.使用递归解决问题,思路清晰,代码少.但是在主流高级语言中(如C语言.Pascal语言等)使用递归算法要耗用更多的栈空间,所以在堆栈尺寸受限制时(如嵌入式系统或者内核态编程),应避免采用.所有

  • Python非单向递归函数如何返回全部结果

    递归( recursion)是一种神奇的编程技巧,可以大幅简化代码,使之看起来更加简洁.然而递归设计却非常抽象,不容易掌握.通常,我们都是自上而下的思考问题, 递归则是自下而上的解决问题--这就是递归看起来不够直观的原因. 和递归相关的概念里,线性递归/非线性递归.单向递归/非单向递归,是非常重要的,要想掌握递归技术,就必须要深入理解.关于递归的基本概念,有兴趣的读者,可以参考我的博客<Python 递归算法指归>.今天,仅就背包问题谈非单向递归函数如何返回全部结果. 背包问题的背后,是世界七

  • Python全栈之递归函数

    目录 1. 递归函数 2. 递归练习 3. 小练习 总结 1. 递归函数 # ### 递归函数 """ 递归函数 : 自己调用自己的函数 , 叫做递归函数 递 : 去 归 : 回 一去一回叫做递归 """ def digui(n): print(n,"<==1==>") if n > 0: digui(n-1) print(n,"<==2==>") digui(5) "

  • Python基础学习之深浅拷贝问题及递归函数练习

    目录 一.深浅拷贝问题 二.递归函数练习 1. 求阶乘 2. 猴子吃桃问题 3. 打印斐波那契数列 一.深浅拷贝问题 在实际工作中,经常涉及到数据的传递,在数据传递使用过程中,可能会发生数据被修改的问题.为了防止数据被修改,就需要在传递一个副本,即使副本被修改,也不会影响原数据的使用.为了生成这个副本,就产生了拷贝.下面先了解一下几个概念:对象.可变类型.引用 Python对象:在 Python 中,对象有一种很通俗的说法是,万物皆对象.说的就是构造的任何数据类型都是一个对象,无论是数字,字符串

  • python基础学习之递归函数知识总结

    一.递归函数使用注意点 递归函数一定要编写终止条件,否则将产生无限递归.(死循环) 二.递归的效率问题 递归效率不高,递归层次过多会导致栈溢出. Python中不推荐使用递归. 三.递归函数引入 """ 使用代码循环输出故事:从前有座山,山里有座庙... """ # ------------while循环 (暂时忽略死循环)--------------- while True: print("从前有座山,山里有座庙...")

  • Python编程如何在递归函数中使用迭代器

    首先,想要实现的功能是递归遍历文件夹,遇到满足条件的文件时,用yield返回该文件的位置. 如果不用递归器,可以这样实现: path_list = [] def get_one_cage(root: str, cook_folder_name: str): for item in os.listdir(root).copy(): item_path = os.path.join(root, item) if item == cook_folder_name: path_list.append(i

  • Python 函数的递归详解

    目录 1.1.递归函数的特点 1.2 递归案例 ----- 计算数字累加 总结 函数调用自身的 编程技巧 称为递归. 1.1.递归函数的特点 特点: 一个函数 内部 调用自己. 函数内部可以调用其他函数,当然在函数内部也可以调用自己. 代码特点: 1).函数内部的 代码 是相同的,只是针对 参数 不同,处理的结果不同: 2).当 参数满足一个条件 时,函数不再执行: 这个非常重要,通常被称为递归的出口,否则 会出现死循环! def sum_number(num): print(num) # 递归

  • Python函数参数操作详解

    本文实例讲述了Python函数参数操作.分享给大家供大家参考,具体如下: 简述 在 Python 中,函数的定义非常简单,满足对应的语法格式要求即可.对于调用者来说,只需关注如何传递正确的参数,以及获取相应的返回值就足够了,无需了解函数的内部实现(除非想学习.跟踪源码). 话虽如此,但对于函数的定义来说,灵活性非常高.除了常规定义的必选参数以外,还支持默认参数.可变参数.以及关键字参数.这样以来,不但能处理复杂的参数,还可以简化调用者的代码. 形参和实参 不止 Python,几乎所有的编程语言都

  • Python函数基础实例详解【函数嵌套,命名空间,函数对象,闭包函数等】

    本文实例讲述了Python函数基础用法.分享给大家供大家参考,具体如下: 一.什么是命名关键字参数? 格式: 在*后面参数都是命名关键字参数. 特点: 1.约束函数的调用者必须按照Kye=value的形式传值. 2.约束函数的调用者必须用我们指定的Key名. def auth(*args,name,pwd): print(name,pwd) auth(pwd='213',name='egon') def register(name,age): print(type(name),type(age)

  • Python 函数装饰器详解

    目录 使用场景 授权(Authorization) 日志(Logging) 带参数的装饰器 在函数中嵌入装饰器 装饰器类 总结 装饰器(Decorators)是 Python 的一个重要部分.简单地说:他们是修改其他函数的功能的函数.他们有助于让我们的代码更简短,也更Pythonic(Python范儿).大多数初学者不知道在哪儿使用它们,所以我将要分享下,哪些区域里装饰器可以让你的代码更简洁.首先,让我们讨论下如何写你自己的装饰器. 这可能是最难掌握的概念之一.我们会每次只讨论一个步骤,这样你能

  • Python函数的嵌套详解

    Python允许在函数中定义函数,这通常被称为嵌套函数或者内部函数. def speak(text): def my_lower(t): return t.lower() + '...' return my_lower(text) print(speak('Aomi')) 每次调用speak()时,都会调用一个新的内部函数my_lower()并立即调用. 但是my_lower()只存在于speak内部,那怎么才能从speak外部访问嵌套的my_lower()函数呢? 由于函数是对象,因此可以将内

  • python模块shutil函数应用示例详解教程

    目录 本文大纲 知识串讲 1)模块导入 2)复制文件 3)复制文件夹 4)移动文件或文件夹 5)删除文件夹(慎用) 6)创建和解压压缩包 本文大纲 os模块是Python标准库中一个重要的模块,里面提供了对目录和文件的一般常用操作.而Python另外一个标准库--shutil库,它作为os模块的补充,提供了复制.移动.删除.压缩.解压等操作,这些 os 模块中一般是没有提供的.但是需要注意的是:shutil 模块对压缩包的处理是调用 ZipFile 和 TarFile这两个模块来进行的. 知识串

  • python里使用正则的findall函数的实例详解

    python里使用正则的findall函数的实例详解 在前面学习了正则的search()函数,这个函数可以找到一个匹配的字符串返回,但是想找到所有匹配的字符串返回,怎么办呢?其实得使用findall()函数.如下例子: #python 3. 6 #蔡军生 #http://blog.csdn.net/caimouse/article/details/51749579 # import re text = 'abbaaabbbbaaaaa' pattern = 'ab' for match in r

  • Python 私有函数的实例详解

    Python 私有函数的实例详解 与大多数语言一样,Python 也有私有的概念: • 私有函数不可以从它们的模块外面被调用 • 私有类方法不能够从它们的类外面被调用 • 私有属性不能够从它们的类外面被访问 与大多数的语言不同,一个 Python 函数,方法,或属性是私有还是公有,完全取决于它的名字. 如果一个 Python 函数,类方法,或属性的名字以两个下划线开始 (但不是结束),它是私有的:其它所有的都是公有的. Python 没有类方法保护 的概念 (只能用于它们自已的类和子类中).类方

  • Python进阶-函数默认参数(详解)

    一.默认参数 python为了简化函数的调用,提供了默认参数机制: def pow(x, n = 2): r = 1 while n > 0: r *= x n -= 1 return r 这样在调用pow函数时,就可以省略最后一个参数不写: print(pow(5)) # output: 25 在定义有默认参数的函数时,需要注意以下: 必选参数必须在前面,默认参数在后: 设置何种参数为默认参数?一般来说,将参数值变化小的设置为默认参数. python标准库实践 python内建函数: prin

  • python中 chr unichr ord函数的实例详解

    python中 chr unichr ord函数的实例详解 chr()函数用一个范围在range(256)内的(就是0-255)整数作参数,返回一个对应的字符.unichr()跟它一样,只不过返回的是Unicode字符,这个从Python 2.0才加入的unichr()的参数范围依赖于你的python是如何被编译的.如果是配置为USC2的Unicode,那么它的允许范围就是range(65536)或0x0000-0xFFFF:如果配置为UCS4,那么这个值应该是range(1114112)或0x

随机推荐