재귀함수 질문입니다
동백
2023.04.01
#include stdio.h
void printn(int);
int main(void)
{
int a;
printf(양의 정수를 하나 입력 - );
scanf(%d, &a);
printn(a);
printf(\n);
return 0;
}
void printn(int cnt)
{
if (cnt = 1) {
printn(cnt-1);
printf(%3d, cnt);
}
}
1에서 5까지를 출력한다고 하면 5를 입력하면
cnt=1일때 54321로 출력되는거 아닌가요?
왜 12345로 출력되는지 이해가 안됩니다 왜 이렇게 출력이 되는건가요?
-
해비치
그 이유는 printn이 printf보다 먼저있어서
4부터 1까지 출력한다 ...1
5를 출력한다.
1번에서도
3에서 4까지 출력한다...2
4를 출력한다.
... 마찬가지로 해보면
1에서 1까지 출력한다.
2를 출력한다.
0에서 1까지 출력한다.
1을 출력한다.
0은 cnt=1을 만족하지 않으므로 반환. //반환은 return을 의미합니다.
1을 출력한다.
반환.
2를 출력한다.
반환..
.
.
.
5를 출력한다
반환
//main
이렇게 되서 -
화이트
printn함수 내에서 printn()함수 호출이 계속 되기 때문입니다.
함수가 종료되면 함수를 호출한 시점으로 돌아갑니다.
즉, 맨 마지막 함수에서 처음 출력후 복귀하고 출력하고 복귀하고 출력하기를 반복하기 때문에 그렇습니다.
번호 | 제 목 | 글쓴이 | 날짜 |
---|---|---|---|
2695270 | 질문이요..swap 관한겁니다..ㅠㅠ (3) | 콩알녀 | 2025-05-19 |
2695244 | 노땅초보궁금한게 하나 있는데요..반복문(while문)초보자질문 (6) | 큰꽃늘 | 2025-05-18 |
2695166 | do while 문 어떤것이잘못된건지 모르겠어요 (2) | 아이폰 | 2025-05-18 |
2695122 | 구조체에 대해 물어보고 싶은게 있습니다 ^^^.. (7) | 수련 | 2025-05-17 |
2695091 | txt 파일 입출력 후 2차 배열에 저장하기입니다. (3) | 헛장사 | 2025-05-17 |
2695063 | 수도요금 프로그램좀 짜주세요. | 시내 | 2025-05-17 |
2695033 | 답변좀요ㅠㅠ (1) | 비사벌 | 2025-05-16 |
2695010 | C++의 STL은 왜 굳이 템플릿화 시켜서 라이브러리를 만드나요? (초보수준의 질문..) (2) | 엘보어 | 2025-05-16 |
2694958 | 로직이 변한다는 것에 대해서 궁금합니다. | 튼동 | 2025-05-16 |
2694929 | 열혈강의 25-2 두번째 문제 질문 | 지우개 | 2025-05-15 |
2694900 | dequeue 에서 리턴값 프린트 방법알려주세요 오늘 12시까지 대화방에 있습니다 도와주세요 | 미투리 | 2025-05-15 |
2694854 | 절대값을 구할때 (2) | 그녀는귀여웠다 | 2025-05-15 |
2694827 | 이제 어떻게 공부해야할지 모르겠네요 | 새얀 | 2025-05-14 |
2694778 | 순열 계산요. | 맛조이 | 2025-05-14 |
2694754 | ShowWindow 함수를 이용하려 하는데 질문있습니다. (2) | 파도 | 2025-05-14 |
2694731 | 리눅스 커널의 시작점 질문 | 미르 | 2025-05-13 |
2694702 | 이거 뭐가문제인가요 코드수정좀 (3) | 맑은 | 2025-05-13 |
2694675 | C언어 후위표기를 중위표기로 | 앨런 | 2025-05-13 |
2694646 | 안녕하세요 파일 합치기 함수! (1) | 연블루 | 2025-05-13 |
2694618 | 잘몰라서 설명부탁드립니다. scanf 관련 (3) | 파라 | 2025-05-12 |