美文网首页
函数的嵌套与递归

函数的嵌套与递归

作者: 5f2a6061653d | 来源:发表于2019-01-31 06:46 被阅读45次

Python语言允许在函数定义中出现函数调用,从而形成函数的嵌套调用,如下所示。

 1  def fun1():
 2      print('fun1()函数开始')
 3      print('fun1()函数结束')
 4  def fun2():
 5      print('fun2()函数开始')
 6      fun1()
 7      print('fun2()函数结束')
 8  fun2()

运行结果如下图所示。


运行结果

在上例中,第5行在fun2()函数中调用fun1()函数,程序执行时会跳转到fun1()函数处去执行,执行完fun1()后,接着执行fun2()函数中剩余的代码,如下图所示。


函数的嵌套调用执行过程.png

函数的递归调用

在函数的嵌套调用中,一个函数除了可以调用其他函数外,还可以调用自身,这就是函数的递归调用,递归必须要有结束条件,否则会无限地递归。
接下来演示函数的递归调用,如下所示。

 1  def f(n):
 2      '''
 3      计算阶乘公式:
 4          0! = 1
 5          n! = n * (n -1)!, n > 0
 6      转化为递归函数:
 7          f(0) = 1
 8          f(n) = n * f(n - 1), n > 0
 9      '''
 10     if n == 0:
 11         return 1
 12     return n * f(n - 1)
 13 print('4! = %d'%f(4))

运行结果如下图所示。


运行结果

在上例中,第10行到第12行定义f()函数用于计算阶乘,当n == 0时,程序立即返回结果,这种简单情况称为结束条件,如果没有结束条件,就会出现无限递归。当n > 0时,就将这个原始问题分解成计算(n – 1)阶乘的子问题,持续分解,直到问题达到结束条件为止,就将结果返回给调用者,然后调用者进行计算并将结果返回给它自己的调用者,过程持续进行,直到结果返回原始调用者为止。原始问题就可以通过将f(n-1)的结果乘以n得到,这种调用过程就称为递归调用,如下图所示。


函数的递归调用.png

相关文章

  • 函数的嵌套与递归

    Python语言允许在函数定义中出现函数调用,从而形成函数的嵌套调用,如下所示。 运行结果如下图所示。 在上例中,...

  • Python札记20_递归、传递

    在Python中函数也是一种对象,有几种特别的应用: 递归函数 传递函数 嵌套函数 递归 递归又称为递回,是指在函...

  • Python 之路03 - Python基础3

    本节内容 函数与函数式编程 函数式编程之参数详解 局部变量与全局变量作用域嵌套函数 递归 函数式编程介绍 高阶函数...

  • c++ day03

    函数的原型声明 理解函数参数的传值 哥德巴赫猜想验证 函数引用调用示例 函数的嵌套调用 函数递归 递归就是自己调用...

  • 程序员大神教你学C语言编程——递归函数

    一、什么是递归函数 (1)递归函数即自调用函数,在函数内部直接或间接地自己调用自己,即函数的嵌套调用是函数本身。 ...

  • 2018-10-17 018 函数Def B

    今天写一写函数的(相对)高级用法,主要是递归、嵌套、作用域和匿名函数的东西; 函数嵌套 函数在定义时,内部可以再写...

  • python函数的递归

    一 函数递归调用介绍 函数不仅可以嵌套定义,还可以嵌套调用,即在调用一个函数的过程中,函数内部又调用另一个函数,而...

  • 嵌套-递归-内置函数

    在了解了函数的定义和函数调用外,下面我们来介绍一下JavaScript中几种特殊的函数 JavaScript特殊函...

  • 闭包及装饰器

    递归:是自己调用自己闭包:函数嵌套,并且保存局部作用域变量

  • 2017年9月22日学习总结

    2017年9月22日星期五 今天新课内容讲的函数的嵌套和递归,以及数组作为函数参数。 所谓函数嵌套是指在调用一个函...

网友评论

      本文标题:函数的嵌套与递归

      本文链接:https://www.haomeiwen.com/subject/nxdcrqtx.html