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

재귀 없이 숫자 자릿수의 합을 구하는 파이썬 프로그램

재귀 호출 없이 숫자의 각 자릿수 합을 구해야 하는 경우, '%' 연산자(나머지), '+' 연산자(덧셈), '//' 연산자(정수 나눗셈)를 함께 활용하면 손쉽게 해결할 수 있습니다.

핵심 아이디어는 간단합니다. 어떤 수를 10으로 나눈 나머지는 항상 그 수의 마지막 자릿수이고, 10으로 정수 나눗셈을 하면 마지막 자릿수가 제거된다는 점을 이용하는 것입니다. 아래 예제를 통해 자세히 살펴보겠습니다.

예제 코드

def sum_of_digits(my_num):
    sum_val = 0
    while (my_num != 0):
        sum_val = sum_val + (my_num % 10)
        my_num = my_num//10
    return sum_val
my_num = 12345671
print("The number is : ")
print(my_num)
print("The method to calculate sum of digits is being called...")
print("The sum of " +str(my_num) + " is : ")
print(sum_of_digits(my_num))

실행 결과

The number is :
12345671
The method to calculate sum of digits is being called...
The sum of 12345671 is :
29

코드 설명

  • 함수 정의: 'sum_of_digits'라는 이름의 함수를 정의하고, 계산할 숫자를 매개변수로 전달받습니다.
  • 초기화: 합계를 저장할 변수 sum_val을 0으로 초기화합니다.
  • 자릿수 추출: 숫자를 10으로 나눈 나머지(% 10), 즉 마지막 자릿수를 합계에 더합니다.
  • 자릿수 제거: 숫자를 10으로 정수 나눗셈(// 10)한 결과를 다시 해당 숫자에 대입하여 마지막 자릿수를 제거합니다.
  • 반복 처리: while 루프는 숫자가 0이 될 때까지 위 과정을 반복하므로, 모든 자릿수가 한 번씩 더해집니다.
  • 결과 반환: 모든 자릿수를 더한 합계 값을 함수의 결과로 반환합니다.
  • 함수 호출: 숫자 12345671을 정의하고 콘솔에 출력한 뒤, 이 숫자를 인자로 전달하며 함수를 호출합니다.
  • 결과 출력: 계산된 자릿수의 합(29)이 콘솔에 출력됩니다.

이처럼 재귀를 사용하지 않고도 반복문과 기본 산술 연산자만으로 숫자 자릿수의 합을 효율적으로 구할 수 있습니다. 재귀 방식은 호출 스택을 사용하기 때문에 매우 큰 숫자에서는 스택 오버플로우 위험이 있지만, 이 반복문 방식은 그러한 제약 없이 안정적으로 동작한다는 장점이 있습니다.