Inflearn コミュニティ Q&A
재귀 호출 질문 있습니다.
作成
·
381
0
선생님 아래 재귀 호출에서요 printf("%d",x); 할때 return 있을 때와 없을 스택에 저장 되는 차이가 있는가요?
void D(int x){
if(x==0) return;
else {
D(x-1);
return printf("%d",x);
}
}
C++코테 준비 같이 해요!
回答 5
1
codingcamp
インストラクター
return DFS(x-1)과 DFS(x-1) 두 코드를 call stack 창을 켜고 디버그해보면 동일하게 스택에 쌓이는 걸 봐서는 차이가 없는 것 같습니다.
0
0
0
David Lee
質問者
아 죄송 합니다. 제 질문이 다시 읽어 보니 제가 잘못 질문 했습니다. 아래 코드 에서요 DFS를 다시 호출 할때 return DFS(x - 1) 과 DFS(x - 1) 의 결과가 같은데요.. 이것도 역시 stack 프레임 저장시 차이가 없는건가요?
void DFS(int x) {
if (x == 0) return;
else
printf("%d ", x);
return DFS( x - 1 );
}
0
codingcamp
インストラクター
printf문을 리턴으로 해서 출력하는 것을 저도 생각해본적이 없어서 모르겠지만, 차이는 없을 겁니다.
그리고 void 형 함수는 printf문을 리턴할 수 없어 에러가 날 겁니다. 아래 코드처럼 하면 1부터 N까지 출력할 수 있습니다.
int DFS(int x){
if(x==0) return 0;
else{
DFS(x-1);
return printf("%d ", x);
}
}




