鱼C论坛

 找回密码
 立即注册
查看: 2328|回复: 6

[已解决]递归是是神马

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

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

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

x
递归是什么视频中的例子
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))

return 1的作用是什么?  return 1返回值为什么不是1? 求鱼油解答一下
最佳答案
2020-2-18 14:03:37
本帖最后由 4goodworld 于 2020-2-18 14:06 编辑

递归简单来讲就是 函数自己调用自己
你看下图,很好地解释了什么叫做自己调用自己
5b6fac206abe6.jpg
return 1的作用是什么,就是自己调用自己有一个终结的点,如果函数没有一个真正返回的点,
那不就是
从前有座山,山里有座庙,庙里有个和尚,和尚在讲故事,从前有座山,山里有座庙,庙里有个和尚,和尚在讲故事,从前有座山...
然后,程序崩了
至于 return 1返回值为什么不是1
你得看你调用的是几呀
举例:
factorial(2)
n=2 进入函数内 发现n!=1,然后 else   n * factorial(n-1) 又进入一个自己的函数
此刻的“n”=原来的n-1=1,发现n=1,所以 return  1
结束了?
没有,你只是  factorial(n-1) 返回了 1 ,还要处理 n*1,请问当前的n是多少?n=2
所以return 2*1
这才结束
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-2-18 13:57:49 | 显示全部楼层
当n为1时,factorial(1)返回1
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-18 14:03:37 | 显示全部楼层    本楼为最佳答案   
本帖最后由 4goodworld 于 2020-2-18 14:06 编辑

递归简单来讲就是 函数自己调用自己
你看下图,很好地解释了什么叫做自己调用自己
5b6fac206abe6.jpg
return 1的作用是什么,就是自己调用自己有一个终结的点,如果函数没有一个真正返回的点,
那不就是
从前有座山,山里有座庙,庙里有个和尚,和尚在讲故事,从前有座山,山里有座庙,庙里有个和尚,和尚在讲故事,从前有座山...
然后,程序崩了
至于 return 1返回值为什么不是1
你得看你调用的是几呀
举例:
factorial(2)
n=2 进入函数内 发现n!=1,然后 else   n * factorial(n-1) 又进入一个自己的函数
此刻的“n”=原来的n-1=1,发现n=1,所以 return  1
结束了?
没有,你只是  factorial(n-1) 返回了 1 ,还要处理 n*1,请问当前的n是多少?n=2
所以return 2*1
这才结束

评分

参与人数 1荣誉 +2 鱼币 +2 收起 理由
一个账号 + 2 + 2 支持楼主!

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 2 反对 0

使用道具 举报

 楼主| 发表于 2020-2-18 14:28:16 | 显示全部楼层
4goodworld 发表于 2020-2-18 14:03
递归简单来讲就是 函数自己调用自己
你看下图,很好地解释了什么叫做自己调用自己

噢噢噢,我懂了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-18 14:28:52 | 显示全部楼层
冬雪雪冬 发表于 2020-2-18 13:57
当n为1时,factorial(1)返回1

噢噢噢,我懂了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-18 14:41:16 | 显示全部楼层
4goodworld 发表于 2020-2-18 14:03
递归简单来讲就是 函数自己调用自己
你看下图,很好地解释了什么叫做自己调用自己

比如 5的阶乘 中间的相乘出来的结果值返回在那个return?
return n * factorial(n-1) 这里的 return n 值不是跟着n-1在变吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-2-18 15:02:13 | 显示全部楼层
emm 后面我自己理解懂了,最后返回的1的值 给上一次调用 相乘  相乘后的 值 在给一次调用相乘~  print 的结果是else return 的结果。。新手都以为print 输出 是判断后的 return
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-3-2 20:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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