递归函数返回None排查:如何让函数正确返回ndarray?
问题分析与解决
你的递归函数返回None的核心原因是:else分支中调用递归函数时,没有将递归的返回值传递回上层调用。只有当value==max_value的终止条件触发时,函数会返回数组,但其他递归步骤的调用没有返回任何内容,导致上层函数最终得到None。
修改后的代码
import numpy as np def upgrade_array(array:np.ndarray, max_value:int, value:int=1): a = array.copy() index = value-1 a[index,:] = value if value==max_value: return np.array(a) else: # 关键修改:添加return,将递归调用的结果返回 return upgrade_array(array=a, max_value=max_value, value=value+1) a = np.zeros(shape=(10,5)) b = upgrade_array(array=a, max_value=10) display(b)
说明
在else分支中,必须通过return将递归调用upgrade_array(...)的结果返回给当前函数的调用者,这样递归的每一层都能把最终生成的数组传递回去,直到最外层调用得到目标ndarray。
内容的提问来源于stack exchange,提问作者MarnieGrenat
相关产品推荐
相关产品推荐

