작성
·
284
0
선생님 아래 재귀 호출에서요 printf("%d",x); 할때 return 있을 때와 없을 스택에 저장 되는 차이가 있는가요?
void D(int x){
if(x==0) return;
else {
D(x-1);
return printf("%d",x);
}
}
답변 5
1
0
0
0
아 죄송 합니다. 제 질문이 다시 읽어 보니 제가 잘못 질문 했습니다. 아래 코드 에서요 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
printf문을 리턴으로 해서 출력하는 것을 저도 생각해본적이 없어서 모르겠지만, 차이는 없을 겁니다.
그리고 void 형 함수는 printf문을 리턴할 수 없어 에러가 날 겁니다. 아래 코드처럼 하면 1부터 N까지 출력할 수 있습니다.
int DFS(int x){
if(x==0) return 0;
else{
DFS(x-1);
return printf("%d ", x);
}
}