鱼C论坛

 找回密码
 立即注册
查看: 3125|回复: 13

[已解决]如何理解Python递归的停止条件

[复制链接]
发表于 2016-12-19 10:55:17 | 显示全部楼层 |阅读模式
8鱼币
如何理解Python递归的停止条件?

另外

以下代码
def factorial(n):
    if n == 1:
        return 1
    else:
        return n * factorial(n-1)

number = int(input('请输入一个正整数:'))
result = factorial(number)
print("%d 的阶乘是:%d" % (number,result))

number 为什么不能是0 或者 负数?
最佳答案
2016-12-19 10:55:18
理论上讲0的阶乘为1,本程序未考虑这个特例,负数是没有意义的。所以将1作为递归结束的标志。

最佳答案

查看完整内容

理论上讲0的阶乘为1,本程序未考虑这个特例,负数是没有意义的。所以将1作为递归结束的标志。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-12-19 10:55:18 | 显示全部楼层    本楼为最佳答案   
理论上讲0的阶乘为1,本程序未考虑这个特例,负数是没有意义的。所以将1作为递归结束的标志。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-12-19 13:16:53 | 显示全部楼层
该代码中递归的递进值为-1,以n=1为基例。

若num>1,递归到1时结束。
若num=0或num<0时,永远取不到基例,无限递归错误。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-12-19 15:01:16 | 显示全部楼层
zeroError
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-12-19 17:44:10 | 显示全部楼层
冬雪雪冬 发表于 2016-12-19 11:19
理论上讲0的阶乘为1,本程序未考虑这个特例,负数是没有意义的。所以将1作为递归结束的标志。

那么如何理解递归的返回条件,如何设置递归的返回条件,他的机制是怎么样的呢?我在论坛没有找到相关资料,麻烦告知一下,谢谢啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2016-12-19 17:50:00 | 显示全部楼层
duangai 发表于 2016-12-19 13:16
该代码中递归的递进值为-1,以n=1为基例。

若num>1,递归到1时结束。

谢谢,大概明白一些,请问能否告知基例是什么意思?我找了一下,找不到它的定义
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-12-19 19:30:02 | 显示全部楼层
songbingbing520 发表于 2016-12-19 17:44
那么如何理解递归的返回条件,如何设置递归的返回条件,他的机制是怎么样的呢?我在论坛没有找到相关资料 ...

你再仔细看看小甲鱼的视频教程。一般而言设置退出递归的条件能使递归能过完全执行,如阶乘的到n==1,如果汉诺塔的到1层。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-12-19 20:39:08 | 显示全部楼层
这就是一个逻辑关系嘛,你理解了逻辑关系,设置退出递归条件就简单了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

头像被屏蔽
发表于 2016-12-19 23:32:47 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-12-19 23:49:42 | 显示全部楼层
你再仔细看看小甲鱼的视频教程。一般而言设置退出递归的条件能使递归能过完全执行,如阶乘的到n==1,如果汉诺塔的到1层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-12-20 02:40:30 | 显示全部楼层
递归的停止条件就是程序分解到了最底层,也就是从n,n-1,n-2……分解到1
也就是递归的停止条件就是分解到最基本的那层

0的阶乘为1,代码可改为 if n == 1 or n == 0:  return 1。
负数没有阶乘
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-12-20 10:36:12 | 显示全部楼层
在数学上考虑 因为规定嘛 哈哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-12-21 15:26:49 | 显示全部楼层
。。。。。吃瓜
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-12-27 08:13:16 | 显示全部楼层
来学习了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-23 20:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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