재귀 함수(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
'문제 풀이 > 프로그래머스 알고리즘' 카테고리의 다른 글
핸드폰 번호 가리기 (0) | 2024.09.30 |
---|---|
나누어 떨어지는 숫자 배열 (1) | 2024.09.28 |
정수 내림차순으로 배치하기 // 반복문 안에서 collection 의 크기가 변경될 때 생기는 문제 (0) | 2024.09.27 |
정수 제곱근 판별 (0) | 2024.09.26 |
프로그래머스) x만큼 간격이 있는 n개의 숫자 // 배열에 값 추가하기 + 주의 사항 (0) | 2024.09.24 |