繁体   English   中英

如何使用python递归正确返回值?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM