递归函数似乎没有返回值。这是我在Goodrich的数据结构书中看到的片段的修改版本。但是,如果将return语句更改为print语句并删除了对x的赋值,则结果将正确打印到屏幕上。有什么想法吗?
def reverse(S, start, stop):
if start < stop - 1:
S[start], S[stop-1] = S[stop-1], S[start]
reverse(S, start+1, stop-1)
else:
return S
if __name__ == "__main__":
x = reverse([1, 2, 3], 0, 3)
print x
答案 0 :(得分:4)
非常接近。
考虑:
def reverse(S, start, stop):
if start < stop - 1:
S[start], S[stop-1] = S[stop-1], S[start]
return reverse(S, start+1, stop-1) # This should return as well
else:
return S
if __name__ == "__main__":
x = reverse([1, 2, 3], 0, 3)
print x
输出:
[3, 2, 1]
您的基本案例不仅会返回一些内容,而且在递归算法不是基本案例的情况下,您应该返回递归调用的输出。
答案 1 :(得分:1)
我想错过了回报:
def reverse(S, start, stop):
if start < stop - 1:
S[start], S[stop-1] = S[stop-1], S[start]
return reverse(S, start+1, stop-1)
else:
return S
这将导致:[3, 2, 1]