为什么Python递归函数使用了return语句仍返回None值?
问题原因
Python中函数如果没有显式执行return语句返回值,默认会返回None。你当前的代码仅在base case(high == low的分支)添加了返回逻辑,另外两个递归调用分支没有加return,递归产生的结果没有被当前函数层向上传递,因此最外层的函数调用最终只能拿到默认的None。
修复后的代码
def list_min(lst, low, high): if high == low: return lst[low] elif lst[low] >= lst[high]: # 新增return,返回递归调用的结果 return list_min(lst, low+1, high) else: # 新增return,返回递归调用的结果 return list_min(lst, low, high-1) lst1 = [1, 2, 3, 4, 2, 3, 1, 2, 34, 44] print(list_min(lst1, 0, len(lst1)-1)) # 输出:1
内容的提问来源于stack exchange,提问作者MSS
相关产品推荐
相关产品推荐

