python中的递归函数如何表示_python:递归函数

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

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("---------------------")

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

20180621163601031227.png

如果我们计算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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值