鱼C论坛

 找回密码
 立即注册
查看: 1938|回复: 0

[技术交流] 21 函数:递归是什么 - 景命

[复制链接]
发表于 2017-7-13 22:50:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 景命 于 2017-7-14 21:30 编辑

知识点:
我想告诉大家的是 熟能生巧。
设置默认的递归层数:
        import sys
        sys.setrecursionlimit()        #参数为执行递归的层数

递归定义:
        递归必须有调用函数自身的过程、必须有一个正确的返回条件。递归详细可以划分为递推和回推的过程。

递归阶乘的例子:
  1. def a(x):
  2. if x == 0:
  3. reutrn 1                        #退出递归的条件。
  4. else:
  5. return x * a(x - 1)        #在函数a()中调用函数a()自身。

  6. i == int(input("请输入一个正整数:"))
  7. a = a(i)
  8. print("%d的阶乘是%d" % (i,a))
复制代码

详细解释
        递推过程:
                请输入一个正整数:5        #运行程序后将5作为参数传递进函数。
                a(5)        ->        #参数传递进函数后判断5是否等于0。
                return 5 * a(5 - 1)->            #执行return后的语句,从新调用函数a(),将4作为参数传递进去。
                a(4)        ->        #参数传递进函数后判断4是否等于0。
                return 4 * a(4 - 1)->            #执行return后的语句,从新调用函数a(),将3作为参数传递进去。
                a(3)        ->        #参数传递进函数后判断4是否等于0。
                return 3 * a(3 - 1)->            #执行return后的语句,从新调用函数a(),将2作为参数传递进去。
                a(2)        ->        #参数传递进函数后判断4是否等于0。
                return 2 * a(2 - 1)->            #执行return后的语句,从新调用函数a(),将2作为参数传递进去。
                a(1)        ->        #参数传递进函数后判断4是否等于0。
                return 1 * a(1 - 1)->            #执行return后的语句,从新调用函数a(),将0作为参数传递进去。
                a(0)        ->        #参数传递进函数后判断0是否等于0,结果为真,执行return 1
        回推:
                a(0)        ->        #返回值为1
                a(1) = 1 * a(0) = 1 * 1        #a(1)的返回值为1
                a(2) = 2 * a(1) = 2 * 1        #a(2)的返回值为2
                a(3) = 3 * a(2) = 3 * 2        #a(3)的返回值为6
                a(4) = 4 * a(3) = 4 * 6        #a(4)的返回值为24
                a(5) = 5 * a(4) = 5 * 24        #a(1)的返回值为120






评分

参与人数 2荣誉 +3 鱼币 +5 收起 理由
康小泡 + 2
小甲鱼 + 3 + 3 热爱鱼C^_^

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-7 09:53

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表