본문 바로가기
수업자료

실습 : 리스트 모든 요소 합을 반환하는 재귀함수

by ^..^v 2024. 7. 27.
728x90
반응형

리스트 모든 요소 합을 반환하는 재귀함수

매개 변수로 전달 받은 리스트의 모든 요소의 합을 계산해서 반환하는 함수를 작성합니다. 

def sum_list(numbers):
    if len(numbers) == 0:
        return 0
    else:
        return numbers[0] + sum_list(numbers[1:])

# 예제 호출
numbers = [ 1, 2, 3, 4, 5, 6 ]
sum = sum_list(numbers)
print(sum)      # 15


sum_list 함수는 숫자들로 이루어진 리스트 변수 nubmers를 입력으로 받습니다. 

 

기본 사례를 정의합니다.

리스트 numbers의 길이가 0인 경우, 즉 빈 리스트인 경우에는 0을 반환합니다.  이 부분은 재귀 호출의 종료 조건으로 작동합니다. 

if len(numbers) == 0:
    return 0

 

재귀 사례를 정의합니다. 

리스트 numbers의 길이가 0이 아닌 경우, 리스트 numbers의 첫 번째 요소 numbers[0]을 가져오고, 나머지 리스트 numbers[1:]에 대해 sum_list 함수를 다시 호출합니다. 첫 번째 요소와 나머지 리스트의 합을 더하는 과정을 반복해 전체 리스트의 합을 계산합니다. 

return numbers[0] + sum_list(numbers[1:])

 

예제 호출

numbers = [1, 2, 3, 4, 5, 6]
sum = sum_list(numbers)
print(sum)      # 15

주어진 코드가 실행되는 과정을 단계별로 보면 다음과 같습니다. 

  1. 함수 호출: sum_list([1, 2, 3, 4, 5, 6]) → 첫 번째 요소인 1을 선택하고, 나머지 리스트 [2, 3, 4, 5, 6]에 대해 sum_list 함수를 재귀적으로 호출합니다.
  2. 함수 호출: sum_list([2, 3, 4, 5, 6]) → 첫 번째 요소인 2를 선택하고, 나머지 리스트 [3, 4, 5, 6]에 대해 sum_list 함수를 재귀적으로 호출합니다.
  3. 함수 호출: sum_list([3, 4, 5, 6]) → 첫 번째 요소인 3을 선택하고, 나머지 리스트 [4, 5, 6]에 대해 sum_list 함수를 재귀적으로 호출합니다.
  4. 함수 호출: sum_list([4, 5, 6]) → 첫 번째 요소인 4를 선택하고, 나머지 리스트 [5, 6]에 대해 sum_list 함수를 재귀적으로 호출합니다.
  5. 함수 호출: sum_list([5, 6]) → 첫 번째 요소인 5를 선택하고, 나머지 리스트 [6]에 대해 sum_list 함수를 재귀적으로 호출합니다.
  6. 함수 호출: sum_list([6]) → 첫 번째 요소인 6을 선택하고, 나머지 리스트 []에 대해 sum_list 함수를 재귀적으로 호출합니다.
  7. 함수 호출: sum_list([]) → 리스트가 비어 있으므로, 기저 사례에 해당하여 0을 반환합니다.

 

재귀 함수 반환 과정은 다음과 같습니다. 

  1. sum_list([6]) 호출에서, 0에 6을 더하여 6을 반환합니다.
  2. sum_list([5, 6]) 호출에서, 6에 5를 더하여 11을 반환합니다.
  3. sum_list([4, 5, 6]) 호출에서, 11에 4를 더하여 15를 반환합니다.
  4. sum_list([3, 4, 5, 6]) 호출에서, 15에 3을 더하여 18을 반환합니다.
  5. sum_list([2, 3, 4, 5, 6]) 호출에서, 18에 2를 더하여 20을 반환합니다.
  6. sum_list([1, 2, 3, 4, 5, 6]) 호출에서, 20에 1을 더하여 최종 결과인 21을 반환합니다.

 

print(sum)을 통해 최종 결과인 21이 출력됩니다.

 

 

728x90
반응형

댓글