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
주어진 코드가 실행되는 과정을 단계별로 보면 다음과 같습니다.
- 함수 호출: sum_list([1, 2, 3, 4, 5, 6]) → 첫 번째 요소인 1을 선택하고, 나머지 리스트 [2, 3, 4, 5, 6]에 대해 sum_list 함수를 재귀적으로 호출합니다.
- 함수 호출: sum_list([2, 3, 4, 5, 6]) → 첫 번째 요소인 2를 선택하고, 나머지 리스트 [3, 4, 5, 6]에 대해 sum_list 함수를 재귀적으로 호출합니다.
- 함수 호출: sum_list([3, 4, 5, 6]) → 첫 번째 요소인 3을 선택하고, 나머지 리스트 [4, 5, 6]에 대해 sum_list 함수를 재귀적으로 호출합니다.
- 함수 호출: sum_list([4, 5, 6]) → 첫 번째 요소인 4를 선택하고, 나머지 리스트 [5, 6]에 대해 sum_list 함수를 재귀적으로 호출합니다.
- 함수 호출: sum_list([5, 6]) → 첫 번째 요소인 5를 선택하고, 나머지 리스트 [6]에 대해 sum_list 함수를 재귀적으로 호출합니다.
- 함수 호출: sum_list([6]) → 첫 번째 요소인 6을 선택하고, 나머지 리스트 []에 대해 sum_list 함수를 재귀적으로 호출합니다.
- 함수 호출: sum_list([]) → 리스트가 비어 있으므로, 기저 사례에 해당하여 0을 반환합니다.
재귀 함수 반환 과정은 다음과 같습니다.
- sum_list([6]) 호출에서, 0에 6을 더하여 6을 반환합니다.
- sum_list([5, 6]) 호출에서, 6에 5를 더하여 11을 반환합니다.
- sum_list([4, 5, 6]) 호출에서, 11에 4를 더하여 15를 반환합니다.
- sum_list([3, 4, 5, 6]) 호출에서, 15에 3을 더하여 18을 반환합니다.
- sum_list([2, 3, 4, 5, 6]) 호출에서, 18에 2를 더하여 20을 반환합니다.
- sum_list([1, 2, 3, 4, 5, 6]) 호출에서, 20에 1을 더하여 최종 결과인 21을 반환합니다.
print(sum)을 통해 최종 결과인 21이 출력됩니다.
728x90
반응형
'수업자료' 카테고리의 다른 글
실습 : 도서관 관리 시스템 (0) | 2024.07.27 |
---|---|
실습 : 디렉토리 트리 출력 (0) | 2024.07.27 |
실습 : 문자열을 역순으로 반환하는 재귀함수 (0) | 2024.07.27 |
실습 : 중복 제거 후 정렬 (0) | 2024.07.27 |
실습 : 두 개의 리스트에서 공통 요소 찾기 (0) | 2024.07.27 |
댓글