매번 재귀함수가 헷갈렸는데 이번 알고리즘 스터디 덕분에 이해됐다.
재귀함수의 포인트는
자기 자신 호출과 호출이 다 끝났을 때 호출된 함수들을 정리하는 것이다.
☝🏻 재귀함수: 재귀함수가 함수 마지막 부분에 있을 때
#include <stdio.h>
int Print(int x){
//호출 종료 조건
if(x == 0){
return 0;
}
printf("%d ");
Print(--x);
}
//출력: 3 2 1
int main(void){
Print(3);
return 0;
}
✌🏻재귀함수: 재귀함수 호출 뒤에 함수가 남아 있을 때
void binary(int n){
int r;
r = n % 2;
if(n>=2){
binary(n/2);
}
cout << r;
return;
}
int main(void){
binary(10);
return 0;
}
나는 이 두 가지를 똑같다고 생각해서 항상 헷갈렸던 거 같다.
다들 나처럼 헷갈리지 않게 처음 배울 때 제대로 배웠음 한다..
비록 빈약한 그림이지만 조금이라도 이해가 되었길 바란다!