ooxx7788 发表于 2017-2-20 14:24:48

python第17课课后作业的问题求助

本帖最后由 ooxx7788 于 2017-2-20 14:24 编辑



1. 编写一个函数,利用欧几里得算法求最大公约数,例如gcd(x, y)返回值为参数x和参数y的最大公约数。
设两数为a、b(a>b),求a和b最大公约数(a,b)的步骤如下:用a除以b,得a÷b=q......r1(0≤r1)。


如果这样写,就可以正确的显示值。

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


gcd(25, 15)


但是如果这样写,就不能打印正确的值,请问是为什么?

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


print(gcd(25, 15))

ZoeLee 发表于 2017-2-20 17:08:16

我猜return是if里面的,不算函数的返回值。不知道对不对

lubcat 发表于 2017-2-22 14:05:23

return y 换成print(y)就可以。

我同意楼上的想法。
return y 没有作为函数体的返回值
所以函数默认就返回None
页: [1]
查看完整版本: python第17课课后作业的问题求助