为什么 Python 递归函数返回 None [重复]
- 2025-01-08 08:50:00
- admin 原创
- 95
问题描述:
以下代码None
在某些值(例如306, 136
)上返回,在某些值(42, 84
)上返回正确答案。print a
和return a
应该产生相同的结果,但事实并非如此:
def gcdIter (a,b):
c = min (a,b)
d = max (a,b)
a = c
b = d
if (b%a) == 0:
print a
return a
gcdIter (a,b%a)
print gcdIter (a,b)
解决方案 1:
您忽略了递归调用的返回值:
gcdIter (a,b%a)
递归调用与对其他函数的调用没有什么不同;如果你试图产生结果,你仍然需要对该调用的结果进行处理。你需要使用return
return gcdIter (a,b%a)
请注意,分配时可以分配给多个目标:
def gcdIter(a, b):
a, b = min(a, b), max(a, b)
if b % a == 0:
return a
return gcdIter(a, b % a)
您实际上不需要关心这里的较大和较小的值。更紧凑的版本是:
def gcd_iter(a, b):
return gcd_iter(b, a % b) if b else abs(a)
相关推荐
热门文章
项目管理软件有哪些?
热门标签
云禅道AD