在函数内部我们可以调用其它函数如:

defsay(great):returngreatdefperson(name):print(say("Hello"), name)

person("珊迪 奇克斯")

打印如下:

>>> Hello 珊迪 奇克斯

但如果我们调用自身,这个函数就是递归函数

举个例子,我们来计算阶乘 n! = 1 x 2 x 3 x ... x n(比如5的阶乘:5*4*3*2*1)用函数fact(n)表示可以看出:

fact(n) = n! = 1x  2 x  3 x .....x (n - 1) x n = (n - 1) ! x n = fact(n - 1) * n

所以,fact(n)可以表示n * fact(n - 1),只有n = 1时需要特殊处理。(否则1*fact(1 - 1) =0没有意义)

于是,fact(n) 用递归的方式写出来就是:

deffact(n):if n == 1:return 1

return n * fact(n - 1)

上面就是一个递归函数,我们把它写成一个功能方便我们演示结果

detail = input("阶乘计算器: 九九参考计算器 按任意键继续\n\n")defface(n):if n == 1:return 1

return n * face(n - 1)whileTrue:

num= int(input("输入数值你想找到的阶乘:"))print("阶乘结果是:",face(num))print("---------------------")

这样我们就可以演示我们写的阶乘计算器程序了!

如果我们计算fact(5)可以根据函数定义看到计算过程如下:

===> fact(5)

===> 5 * fact(4)

===> 5 * (4 * fact(3))

===> 5 * (4 * (3 * fact(2)))

===> 5 * (4 * (3 * (2 * fact(1))))

===> 5 * (4 * (3 * (2 * 1)))

===> 5 * (4 * (3 * 2))

===> 5 * (4 * 6)

===> 5 * 24

===> 120

递归函数的优点是定义简单,逻辑清晰。理论上,所有的递归函数都可以写成循环的方式,但循环的逻辑不如递归清晰。

python中的递归函数如何表示_python:递归函数相关推荐

  1. [转载] python中for语句用法_详解Python中for循环的使用_python

    参考链接: 在Python中将else条件语句与for循环一起使用 这篇文章主要介绍了Python中for循环的使用,来自于IBM官方网站技术文档,需要的朋友可以参考下 for 循环 本系列前面 &q ...

  2. python中for语句用法_详解Python中for循环的使用_python

    这篇文章主要介绍了Python中for循环的使用,来自于IBM官方网站技术文档,需要的朋友可以参考下 for 循环 本系列前面 "探索 Python,第 5 部分:用 Python 编程&q ...

  3. python中异或怎么算_python 异或运算的前提_异或运算公式

    Python基础(10)–数字-Python-第七城市 609x288 - 73KB - JPEG Python基础(10)--数字_资讯_突袭网 609x288 - 33KB - JPEG pyth ...

  4. python中使用函数的优点_Python基础之函数基本用法与进阶详解

    本文实例讲述了Python基础之函数基本用法与进阶.分享给大家供大家参考,具体如下: 目标 函数参数和返回值的作用 函数的返回值 进阶 函数的参数 进阶 递归函数 01. 函数参数和返回值的作用 函数 ...

  5. python中的命名空间指什么_python中命名空间

    原文章 由一个例子到python的名字空间 .这篇文章对python的命名空间做出了非常好的介绍,这里是我自己的一些理解. 例子1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...

  6. python中fact()是什么意思_python中fact函数是什么及如何使用?

    虽然已经和大家讲述过很多函数了,但是因为在项目搭建里,函数是起着十分重要的作用,所以需要用到的函数有很多,而绝大部分函数,大家经常使用过程中,轻松运用使用,但是还有少部分函数,大家却未见过,也不知道怎 ...

  7. python中函数的定义包括_python中函数的定义及调用

    python中函数的定义及使用方法 1.函数的概念:函数是将具有独立功能的代码块组织为一个整体,使其具有特殊功能的代码集; 2.函数的作用:使用函数可以加强代码的复用性,提高程序编写的效率; 3.函数 ...

  8. python中get和set使用_Python对象属性的set和get方法

    属性的set和get方法 如果有一个对象,当需要对其进行修改属性时,有2种方法: 1.对象名.属性名 = 数据 -->直接修改 2.对象名.方法名() -->间接修改 为了更好的保存属性安 ...

  9. python中if else语句用法_python中if及if-else如何使用

    if 结构 if 结构允许程序做出选择,并根据不同的情况执行不同的操作 基本用法 比较运算符 根据 PEP 8 标准,比较运算符两侧应该各有一个空格,比如:5 == 3. PEP8 标准 ==(相等) ...

  10. python中的队列和栈_python的队列和栈

    (一)队列和栈的区别 1.队列: 队列是一种特殊的线性表.其两头都有限制,插入只能在表的一端进行(只进不出),而删除只能在表的另一端进行(只出不进),允许删除的一端称为队尾(rear),允许插入的一端 ...

最新文章

  1. -bash: git: command not found
  2. 计算机专业勤学善思感悟,勤学善思作文600字
  3. 对讲业务对讲过程中的几个状态
  4. vscode html如何插入模板?(!)
  5. linux调用一个函数失败 打印错误,linux下settimeofday函数调用失败,何故?解决办法...
  6. OpenCV+yolov2-tiny实现目标检测(C++)
  7. rust布料怎么弄_布料“难弄”,你需要从这六方面解决!
  8. JavaScript之面向对象学习四原型对象的动态性
  9. 工业机器人九龙坡区职教中心_山西省襄汾县职教中心“智能工业机器人订单班”学生集体观看直播“2020一带一路暨金砖国家技能发展与技术创新大赛”...
  10. android使用post方法登录,使用REST API使用POST方法在Android中登录示例
  11. intel cpu 漏洞 linux,Intel CPU架构漏洞越捅越大:打补丁将损失30%性能
  12. C++调用SSD caffe模型进行物体检测-Opencv3.4.3
  13. 英特尔主板快捷启动键_电脑小匠电脑硬件知识科普——主板接口篇
  14. 迈信EP100伺服驱动器量产型修改bug全套C源代码
  15. 3_kicad 5.0_PCB计算器(稳压器,布线宽度,电气间距,传输线路,RF衰减器,颜色代码,电路板类别)...
  16. C语言--逻辑判断题
  17. go标准库的中文翻译
  18. 基于js实现的简易记账小本
  19. LightOJ 1140 - How Many Zeroes? 数位DP
  20. 金融入门——质押式回购与买断式回购

热门文章

  1. 题库(3)_计算圆周率Π
  2. IAR环境 HandFault定位
  3. 行业生态重塑中,新氧如何逆风翻盘
  4. 中建普联:大数据在工程造价中的应用
  5. PL-SLAM 配置和测试
  6. python模拟登陆 验证码el_python 模拟登陆163邮箱
  7. 【Java基础】Java的继承和多态
  8. 35岁后最可怕的事,就是成为职场中的奢侈品
  9. 推荐一些IEDA,Eclipse十分好用的插件
  10. CHIL-SQL-NOW() 函数