문제 풀이/프로그래머스 알고리즘

프로그래머스) 햐샤드 수 - 재귀 함수, 재귀 메서드

열심히 해 2024. 9. 25. 10:36

재귀 함수(recursive function)의 'recursive'는 ‘반복되는’이라는 의미를 갖고 있습니다. 프로그래밍에서 재귀 함수는 어떤 일을 하는 함수를 만들었을 때, 그 함수 안에서 자기 자신을 다시 불러서 함수가 실행되도록 만든 것입니다.

(출처 : https://terms.naver.com/entry.naver?docId=3611999&cid=58598&categoryId=59316)

 

 

아래 digitSum() 메서드는 주어진 정수의 각 자릿수의 합을 계산하는 재귀 함수입니다. 이 메서드는 정수를 입력받아 그 자릿수의 합을 반환합니다.

 

  • 기본 조건: 재귀 호출에서 종료 조건을 설정합니다. 일반적으로, 숫자가 0이 되었을 때 재귀를 종료합니다.
  • 재귀 호출: 각 호출에서 숫자의 마지막 자리수를 구하고, 이를 합산한 후 나머지 숫자에 대해 다시 digitSum()을 호출합니다.
  • 합산: 각 호출에서 반환된 값을 더하여 최종적으로 모든 자릿수의 합을 계산합니다.
class Main {
    public boolean solution(int x) {
        int sum = digitSum(x);
        return x % sum == 0;
    }

    private int digitSum(int n) {
        if (n == 0) {
            return 0; // 종료 조건
        }
        return n % 10 + digitSum(n / 10); // 재귀 호출, 마지막 자리수 + 나머지의 합
    }
}

 

 

위와 아래의 로직은 같다.

class Main {
    public boolean solution(int x) {
        int sum = 0;
        int temp = x;

        while (temp > 0) {
            sum += temp % 10; // 마지막 자리수 추가
            temp /= 10; // 마지막 자리수 제거
        }
        
        return x % sum == 0;
    }
}

 

 

프로그래머스 - 햐샤드 수

 

https://school.programmers.co.kr/learn/courses/30/lessons/12947

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr