Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

재귀를 활용해 중첩 리스트의 총합을 구하는 Python 프로그램

재귀(recursion) 기법을 사용하여 중첩 리스트(nested list)의 총합을 구해야 할 때는, 리스트를 매개변수로 받는 사용자 정의 메서드를 활용하는 것이 일반적입니다.

재귀란 하나의 큰 문제를 작은 단위로 나누어 각 부분의 결과를 계산한 후, 이 결과들을 결합하여 전체 문제의 해답을 도출하는 프로그래밍 기법입니다.

참고로 파이썬의 리스트는 서로 다른 자료형의 값을 함께 저장할 수 있습니다. 즉, 정수, 실수, 문자열 등 어떤 데이터든 하나의 리스트 안에 담을 수 있습니다.

예제

다음은 재귀를 이용해 중첩 리스트의 합계를 구하는 과정을 보여주는 예제입니다.

def recursion_sum(my_list):
   my_total = 0
   for elem in my_list:
      if (type(elem) == type([])):
         my_total = my_total + recursion_sum(elem)
      else:
         my_total = my_total + elem
   return my_total
my_list = [[2,3], [7,9], [11,45], [78,98]]
print("The list elements are :")
print(my_list)
print( "The sum is :")
print(recursion_sum(my_list))

출력 결과

The list elements are :
[[2, 3], [7, 9], [11, 45], [78, 98]]
The sum is :
253

코드 설명

  • 'recursion_sum'이라는 이름의 메서드를 정의하며, 리스트를 매개변수로 받습니다.
  • 함수 내부에서 합계를 저장할 변수를 먼저 0으로 초기화합니다.
  • 리스트의 각 요소를 반복하면서 확인하는데, 만약 요소의 타입이 리스트라면 해당 하위 리스트의 합을 더하기 위해 같은 메서드를 다시 호출합니다. 이것이 바로 재귀 호출입니다.
  • 요소가 리스트가 아니라면, 해당 값을 그대로 변수에 더합니다.
  • 모든 반복이 끝나면 최종 합계를 담은 변수를 반환하며, 이 값이 콘솔에 출력됩니다.

함수 외부에서 수행되는 작업

  • 중첩 리스트를 정의한 뒤 콘솔에 출력하여 확인합니다.
  • 이 리스트를 매개변수로 전달하며 'recursion_sum' 메서드를 호출합니다.
  • 메서드가 반환한 최종 합계가 콘솔에 표시됩니다.