我在使用Python返回递归函数的结果时遇到了问题。
我的函数需要返回最大list_upper_range
范围内整数之间可能的比较对的列表。
重要的是,每对中只有两个整数配对。
该函数按预期运行,直到我打印结果,并将结果返回到调用函数的位置。
def generate_comparisons_list(list_upper_range, iter_start, list_of_cases):
if iter_start == list_upper_range:
#print(list_of_cases) here verified condition was met
return list_of_cases
for i in range(iter_start+1, list_upper_range):
this_case = [iter_start, i]
list_of_cases.append(this_case)
iter_start += 1
generate_comparisons_list(list_upper_range, iter_start, list_of_cases)
list_of_cases_a_and_b = generate_comparisons_list(list_upper_range=6, iter_start=1, list_of_cases=[])
print(list_of_cases_a_and_b) #returns None
结果应该以
的形式返回[[1, 2], [1, 3], [1, 4], [1, 5], [2, 3], [2, 4], [2, 5], [3, 4], [3, 5], [4, 5]]
我是否误解了Python在递归函数中处理列表的方式?
答案 0 :(得分:3)
python函数不会自动返回最后一个语句(ruby的方式),你必须做一个
return generate_comparisons_list(list_upper_range, iter_start, list_of_cases)
在你的功能结束时。
看看here,看它是否有效。
答案 1 :(得分:1)
您的函数generate_comparisons_list()
旨在返回一个列表,但在递归调用中,将丢弃返回值。您需要返回结果
return generate_comparisons_list(list_upper_range, iter_start, list_of_cases)