资讯专栏INFORMATION COLUMN

python学习笔记-递归函数

geekidentity / 3160人阅读

摘要:如果一个函数在内部调用函数自身,那么这个就是递归函数。递归函数也可以用循环的方式实现。但是递归函数逻辑较为简单。但是在使用递归函数的时候,要注意防止递归函数调用过多导致栈溢出。

函数就像一个盒子,将相关的一些功能打包成一个函数,以供调用。函数内部可以调用其他函数,也可以调用这个函数自身。
如果一个函数在内部调用函数自身,那么这个就是递归函数。
我们举一个简单的例子。
数学中我们知道100的阶乘,100!=1009998...321.
分解开来,100!=10099!,99!=9998!,98!=98*97!...
那么我们定义一个函数来计算阶乘:

def fact(n):
    return n*fact(n-1)

上面这个函数看起来是一个数字不断地跟与它小1的数相乘,却没有停止的时候。所以我们必须对上述函数进行改造,让它能在n=1的时候,计算完就停下来。

def fact(n):
    if n==0:
        return 1
    else:
        return n*fact(n-1)

递归函数也可以用循环的方式实现。但是递归函数逻辑较为简单。但是在使用递归函数的时候,要注意防止递归函数调用过多导致栈溢出。
想要了解更多关于递归函数栈溢出和相关优化措施,可以阅读廖雪峰老师的博客。
http://www.liaoxuefeng.com/wi...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/44269.html

相关文章

  • python学习笔记之一(.py文件里输入中文报错)

    摘要:定义默认参数要牢记一点默认参数必须指向不变对象尾递归调用函数本身,但是的返回值不包含表达式。而尾指针相当于把常规的递归反过来,增加一层递归的同时释放前一个递归指针,所以能够始终保持只有一个栈帧在使用中。 教程 1、python大小写敏感 如果字符串里面有很多字符都需要转义,就需要加很多,为了简化,Python还允许用r表示内部的字符串默认不转义 >>> print ...

    heartFollower 评论0 收藏0
  • python学习笔记 函数

    摘要:一等函数在中,函数是一等对象。匿名函数关键字在表达式内创建匿名函数然而,简单的句法限制了函数的定义体只能使用纯表达式,即函数的定义体中不能赋值,不能使用等语句。匿名函数适合用于作为函数的参数 一等函数 在python中,函数是一等对象。编程语言理论家把一等对象定义为满足以下条件的程序实体: 在运行时创建 能赋值给变量或数据结构中的元素 能作为参数传给函数 能作为函数的返回结果 在p...

    Scorpion 评论0 收藏0
  • Python基础教程》第六章--读书笔记

    摘要:第六章抽象本章会介绍如何将语句组织成函数。关键字参数和默认值目前为止,我们使用的参数都是位置参数,因为它们的位置很重要,事实上比它们的名字更重要。参数前的星号将所有值放置在同一个元祖中。函数内的变量被称为局部变量。 第六章:抽象 本章会介绍如何将语句组织成函数。还会详细介绍参数(parameter)和作用域(scope)的概念,以及递归的概念及其在程序中的用途。 懒惰即美德 斐波那契数...

    AnthonyHan 评论0 收藏0
  • Python笔记

    摘要:针对尾递归优化的语言可以通过尾递归防止栈溢出。尾递归事实上和循环是等价的,没有循环语句的编程语言只能通过尾递归实现循环。标准的解释器没有针对尾递归做优化,任何递归函数都存在栈溢出的问题。 python 头部: #!/usr/bin/env python # -*- coding: utf-8 -*- 函数的参数 Python的函数具有非常灵活的参数形态,既可以实现简单的调用,又可以传入...

    yuxue 评论0 收藏0
  • 【算法】算法图解笔记_递归

    递归是个有意思的概念,正如在前面所说,递归能让算法的可读性大大提高,而且通常要比使用循环结构更能写出准确的算法。这本书形象引入了递归,并没有太深入,所以我进行了一点添油加醋。 递归 概念 递归其实就是自己调用自己。可以从多种维度对递归分类,我见过的最常见的分类: 直接递归 自己直接调用自己。如: --haskell length :: [a] -> Int length [] = 0 length...

    tomlingtm 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<