鱼C论坛

 找回密码
 立即注册
查看: 1762|回复: 5

[已解决]课后22,小白求助

[复制链接]
发表于 2021-10-9 15:50:50 | 显示全部楼层 |阅读模式

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

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

x
def gcd(x,y):
    if y:
        t = y
        y = x % y
        x = t
        gcd(x,y)
    else:
        return x

print(gcd(1997,615))


为什么这个返回结果是none呢
最佳答案
2021-10-9 15:54:13
def gcd(x,y):
    if y:
        t = y
        y = x % y
        x = t
        return gcd(x,y)
    else:
        return x

print(gcd(15,615))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-10-9 15:54:13 | 显示全部楼层    本楼为最佳答案   
def gcd(x,y):
    if y:
        t = y
        y = x % y
        x = t
        return gcd(x,y)
    else:
        return x

print(gcd(15,615))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-9 17:44:23 | 显示全部楼层
应改为:


  1. def gcd(x,y):
  2.     if y:
  3.         t = y
  4.         y = x % y
  5.         x = t
  6.         return gcd(x,y)
  7.     else:
  8.         return x

  9. print(gcd(15,615))
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-9 18:01:48 | 显示全部楼层
原因大概就是gcd()在循环调用,调用了很多层,只有最后一次进入else后,return了x的值给倒数第二次调用,而在倒数第二次调用的过程中,执行的是if里面的代码段,在这个代码段里没有return,所以倒数第三次调用的返回值就是none,以此类推,打印出来的就是return。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-9 21:33:42 From FishC Mobile | 显示全部楼层
hi_baoge 发表于 2021-10-9 18:01
原因大概就是gcd()在循环调用,调用了很多层,只有最后一次进入else后,return了x的值给倒数第二次调用,而 ...

为什么会return x给倒数第二次用呢,这不是顺序吗?不明白
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-11 11:13:10 | 显示全部楼层
本帖最后由 hi_baoge 于 2021-10-11 11:14 编辑
名字是啥 发表于 2021-10-9 21:33
为什么会return x给倒数第二次用呢,这不是顺序吗?不明白


你这样子理解一下  你执行gcd(1997,512)  是不是因为y为ture值  然后  取余运算  又执行了gcd(x,y)   相当于在函数里又调用了一次函数   然后不断递归   直到执行else   然后return   这属于函数递归  执行了6次gcd()函数
这时候你要知道   函数如果有return  那函数的返回值就是return的值  如果没有return  返回值就是none
这时候再回过来看你这个题  是不是只有第六次调用  执行进else里面  才执行了return命令  但是return的值   只return回了第五次调用里 而第五次调用  是不是执行进了y里面  y里面是不是没有return命令   那是不是相当于给第四次调用return了一个none  以此类推 第一次调用的返回值就是none了  所以打印的就是none
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-30 17:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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