P23欧几里得求公因数 求指点代码哪错了?
终于写出了代码但没有返回内容,虽然我的代码比标准答案啰嗦,但我总觉得应该能跑?
def gcd(x, y):
if y > x:
temp = y
y = x
x = temp
elif y > 0:
result = x % y
x = y
y = result
gcd(x, y)
else:
return x
上述代码调用以后没有返回值,但如果elif y > 0里最后一步写return gcd(x, y)就可以正常返回了,请问这是为什么呢?
我的思路是,递归到最后总会跑到y>0并不成立,这个时候进入else,应该也可以返回x值啊,然后应该就有返回值的。
求指点,谢谢! python交换两个变量十分简单
x,y=y,x def gcd(x, y):
if y > x:
temp = y
y = x
x = temp
print(x)
return x
elif y > 0:
result = x % y
x = y
y = result
gcd(x, y)
else:
return x
gcd(1,2) 爷傲奈我何? 发表于 2020-10-13 20:03
def gcd(x, y):
if y > x:
temp = y
函数要调用,才会执行,要想看到,需要print,if下面缺少返回值 def gcd(x, y):
if y > x: #如果y = 10,x = 9
temp = y #temp = 10
y = x #y = 9
x = temp #x = 10,再后面函数就结束了,啥返回内容也没有
elif y > 0: #同样道理,如果y = 9,x = 10,程序运行到这。第2次还是运行到这,x = 9,y = 1
result = x % y #result = 1。第2次结果resule = 9
x = y #x = 9。第2次结果x = 1
y = result #y = 1。第2次结果y = 9
gcd(x, y) #再次调用函数本身。第2次还是调用函数本身,因为y>x,就去了上面那个判断处,啥也不返回
else: #你要么把这个else去掉试试看?你这意思0<y<x,才会返回x
return x
==============
另外你这算法有点乱啊,函数内嵌套调用自身,容易造成死循环
爷傲奈我何? 发表于 2020-10-13 20:03
def gcd(x, y):
if y > x:
temp = y
这个好像只能跑y>x的情况,而且并没有算出来gcd…
页:
[1]