[英]How to return the value properly in recursion with python?
我希望实现一个函数,该函数可以递归输入数组a
并计算a_i - a_j
的值,其中i
在(len(a))
, j = i -1
并最终返回列表作为输出。 因此,给定一个数组[1, 2, 3, 4, 5, 6]
,结果将是[1, 1, 1, 1, 1]
。
我的代码如下:
import numpy as np
def recur_diff(array, result_array=None):
l = len(array)
if l > 1:
diff = array[-1] - array[-2]
if result_array is None:
result_array = np.array([diff])
else:
result_array = np.append(result_array, diff)
recur_diff(array[:-1], result_array)
else:
return result_array
但是返回的结果是None
。 如果我print result_array
,则输出是我期望的。 你有什么主意吗? 提前致谢!
在recur_diff(array[:-1], result_array)
添加对recur_diff
的递归调用的return
。 否则结果将永远不会返回到更高的级别
if l > 1:
# ...
return recur_diff(array[:-1], result_array)
else:
return result_array
只是提示:您无需计算result_array并将其传递到下一个级别,您可以计算下一个级别,并在当前级别上合并/使用结果。 在许多情况下,这是更简洁的代码。 (在您的示例中,您肯定会确定返回的值是一个数组,而不是测试None
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.