2016-06-23 7 views
0

파이썬에서 재귀 함수의 결과를 반환하는 데 문제가 있습니다.재귀 함수에서 목록을 반환 할 수 없습니다.

내 함수는 최대 list_upper_range 범위의 정수 사이에 가능한 비교 쌍 목록을 반환해야합니다.

두 개의 int가 각 쌍마다 한 쌍씩 쌍을 이루는 것이 중요합니다.

결과가 인쇄 될 때까지 함수가 예상대로 작동하고 결과가 함수가 호출 된 곳으로 반환됩니다.

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]] 

내가 파이썬은 재귀 함수에서 목록을 처리하는 방식을 오해

로 반환해야 하는가?

답변

3

파이썬 기능이 자동으로 마지막 문을 (그런데 루비는 않습니다) 반환하지 않습니다, 당신은 당신의 함수의 끝에서

return generate_comparisons_list(list_upper_range, iter_start, list_of_cases)

을해야한다.

작동 확인하려면 here을보십시오.

+0

이 성공한 전설! 하지만 아직 내 마크가 정확하지는 않습니다. 감사합니다. – JasTonAChair

+0

이것은 일종의 질문의 범위를 벗어나지 만, 여기 itertools로 원하는 것을 생성하는 데보다 합리적인 방법이기도합니다. 'x [0] James

+0

예 훨씬 더 좋네 – JasTonAChair

1

사용자의 기능 generate_comparisons_list()은 목록을 반환하기위한 것이지만 재귀 호출에서는 반환 값이 삭제됩니다. 결과를 반환 할 필요가 있습니다

return generate_comparisons_list(list_upper_range, iter_start, list_of_cases) 
관련 문제