鱼C论坛

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

[技术交流] python入门L22递归

[复制链接]
发表于 2017-7-2 16:54:33 | 显示全部楼层 |阅读模式

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

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

x
递归是什么?
汉诺塔游戏
树结构的定义,用递归来解释树结构的定义会很方便
谢尔宾斯基三角形  (c++教程有实现)
递归自拍(课后作业)
概念:函数调用自身的行为
递归求阶乘
-写一个求阶乘的函数
  - 正整数阶乘☞从1乘以2乘以3一直乘到所要求的数
  - 例如 所给的数是5,则阶乘式1*2*3*4*5,得到120,所以120就是4的阶乘
非递归版本:
def factorial(sub):
        results=1
        while sub:
                results *=sub
                sub= sub-1
        return results
def factorial(n):
    result=n
    for i in range(1,n):
        result *=i

    return result
number=int(input("please give an integer" ))
result= factorial(number)
print("the factorial of %d is %d "% (number,result))
递归版本:
def factorial(n):
    if n == 1:
        return 1
    else:
        return n*factorial(n-1)

number=int(input('give a integer'))
result = factorial(number)
print("the factorial of %d is %d "%(number,result))
递归函数的重点:
1调用函数自身2设置了正确函数返回值





缺点:
递归是函数调用函数自身,每次调用自身都会进行压栈弹栈保存和恢复寄存器的栈操作,
非常消耗时间和空间
递归一旦忘记返回就会直接消耗掉内存,或者使得程序崩溃
递归递归,归去来兮,出来混总是要还的
递归需要被用得恰到好处,例如树结构,谢尔宾斯基三角形。。。

评分

参与人数 2鱼币 +4 收起 理由
小甲鱼 + 2
康小泡 + 2

查看全部评分

本帖被以下淘专辑推荐:

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-29 01:04

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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