璀璨尘世 发表于 2021-4-12 20:27:41

17讲习题-Python教程老版

老版本用辗转相除法求最大公约数,我的程序如下:

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

x = int(input('Please input x: '))
y = int(input('Please input y: '))

if y > x:
    x, y = y, x

print(gcd(x,y))

当采用1997和615这两个互质的数 print的为啥是None呢?

qiuyouzhi 发表于 2021-4-12 20:35:54

改成这样:
def gcd(x,y):
    if x % y != 0:
      return gcd(y, x % y)
    else:
      return y

x = int(input('Please input x: '))
y = int(input('Please input y: '))

if y > x:
    x, y = y, x

print(gcd(x,y))

璀璨尘世 发表于 2021-4-12 20:45:03

qiuyouzhi 发表于 2021-4-12 20:35
改成这样:

感谢,这样修改后的确就没有问题了。想问下为啥这里if后面需要return呢

qiuyouzhi 发表于 2021-4-12 20:46:05

璀璨尘世 发表于 2021-4-12 20:45
感谢,这样修改后的确就没有问题了。想问下为啥这里if后面需要return呢

不返回的话下面那个 return y 就无法返回出去了

璀璨尘世 发表于 2021-4-12 20:48:38

qiuyouzhi 发表于 2021-4-12 20:46
不返回的话下面那个 return y 就无法返回出去了

好嘞 感谢!
页: [1]
查看完整版本: 17讲习题-Python教程老版