|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
终于写出了代码但没有返回内容,虽然我的代码比标准答案啰嗦,但我总觉得应该能跑?
- 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值啊,然后应该就有返回值的。
求指点,谢谢!
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
==============
另外你这算法有点乱啊,函数内嵌套调用自身,容易造成死循环
|
|