수다닷컴

  • 해외여행
    • 괌
    • 태국
    • 유럽
    • 일본
    • 필리핀
    • 미국
    • 중국
    • 기타여행
    • 싱가폴
  • 건강
    • 다이어트
    • 당뇨
    • 헬스
    • 건강음식
    • 건강기타
  • 컴퓨터
    • 프로그램 개발일반
    • C언어
    • 비주얼베이직
  • 결혼생활
    • 출산/육아
    • 결혼준비
    • 엄마이야기방
  • 일상생활
    • 면접
    • 취업
    • 진로선택
  • 교육
    • 교육일반
    • 아이교육
    • 토익
    • 해외연수
    • 영어
  • 취미생활
    • 음악
    • 자전거
    • 수영
    • 바이크
    • 축구
  • 기타
    • 강아지
    • 제주도여행
    • 국내여행
    • 기타일상
    • 애플
    • 휴대폰관련
  • 프로그램 개발일반
  • C언어
  • 비주얼베이직

순환함수 관련 질문입니다~

한누리

2025.09.26


순환함수 관련 질문입니다~

이해가 가지 않는 부분이 있습니다질문 내용 :

.#include stdio.h

void f2(int b);
void f1(int a);
void main(void)
{
f1(30);
}
void f1(int a)
{
if(a) f2(a-1);
printf(%d, a);
}
void f2(int b)
{
printf(. );
if(b) f1(b-1);
}

이런 프로그램이 있고 해설은

(이 프로그램에서 2개의 함수 f1()과 f2()가 서로를 호출하면서 이와 같이 출력한다.
f1();이 호출될 때마다 이 함수는 a가 0인가를 확인한다. 0이 아니면, a-1의 값으로 f2()를 호출한다.
f2()는 먼저 마침표를 출력하고 b가 0인가를 확인한다.
0이 아니면, b-1의 값으로 f1()을 다시 호출하며, 이와 같은 과정을 반복한다. 결국, b가 0이 되면
함수의 호출들이 풀려지기 시작한다.
즉 f1()이 0에서 30까지의 수들을 2만큼의 간격으로 출력한다.)

해설을 봐도 이해가 가질 않습니다.

출력하면 .가 15개 나온후 02468101214~~~2830

이렇게 쭉 나가는데

처음에 30에서 1씩 깎이면서 0이 아니기 때문에 .가 15개 나오는것 까지는 어느정도 이해가 되는데

그 이후에 0246810~ 왜 이런식으로 나오는지 모르겠습니다.

알려주세요~

신청하기





COMMENT

댓글을 입력해주세요. 비속어와 욕설은 삼가해주세요.

  • 대나무 2025-09-26

    답변 감사합니다. 예로 들어주신 것과 비교해서 보니 이해가 잘 되네요~

  • 단화한 2025-09-26

    이렇게 짜는것이 더 맞다고 봅니다. 물론 메인에서만 끝내는 방법도 있고요. 위의 예처럼 자신을 호출하는 것을 재귀함수라고 하며 주 예제로는 팩토리얼함수와 피보나치 수열을 많이 듭니다. 이상 다른 문의점있으면 남겨주세요.

  • 곰탱이 2025-09-26

    이것은
    void main(void)
    {
    f1(30);
    }

    void f1(int a)
    {
    if(a)
    \t f1(a-2);
    printf(\%d\

  • 퍼리 2025-09-26

    그 뒤로 a값을 마지막에 들어온 데이터부터 처리하니까 0~30까지 짝수로 나오게 된것입니다.(홀수는 마침표) 또한 위에서 출력하고자 했던 방식은 0.2.4.6.~이런 방식인거로 생각되는데요.

  • 놓아줄게요 2025-09-26

    일단 저런식의 사용법은 상당히 안좋은 방법인데 어디서 나온 예제인지. 저렇게 출력되는것을 이해하려면 스택이라는 자료구조를 이해해야 합니다. 스택은 후입선출방식 즉 LIFO또는 FILO로 표기합니다. 우리가 사용하는 모든 명령어는 컴퓨터의 스택에 쌓이게 됩니다. 위에서 f1()을 호출하면 f1()이 쌓이고 f1()을 실행하다 f2()를 실행하면 f1()은 f2()가 끝날때까지 기다리는 형식으로 갑니다. 이런게 반복이 되어서 a가 0이되기 전까지 계속 f

번호 제 목 글쓴이 날짜
2752142 더블 포인터 관련 최대최소값 구하기 (2) 풀잎 2026-10-21
2752115 c언어 이상한질문 (4) 모드니 2026-10-21
2752085 문자열을 랜덤하게 출력해서 대체,삽입,삭제 횟수를 각가 표시하고 그걸 표 형태로 출력 슬아s 2026-10-20
2752056 포인터 && 배열 질문요~ (2) 해찬나래 2026-10-20
2752031 x^n 구하는 코드 짜봤는데 값이 틀려요 ㅠㅠ 세실 2026-10-20
2752000 나 정말 미치겠어요..ㅠㅜ (4) 다이 2026-10-20
2751978 문자열 질문이요.. 초시계 2026-10-19
2751945 숫자 맞추는 프로그램이요 ㅠㅠ (1) 동은 2026-10-19
2751917 C언어 이중 연결 관련 질문합니다. 유우 2026-10-19
2751888 return의 정확한 의미좀 알려주세요 (3) 올해1살 2026-10-19
2751857 포인터 배열 (2) 터큰 2026-10-18
2751831 연산자? 질문입니다 (2) 진주 2026-10-18
2751800 C언어 기초질문입니다.. (3) 핫블랙 2026-10-18
2751739 파일 출력을 구조체로 받을 때, 파일의 끝을 판별하는 방법을 알려주세요. (2) 얼 2026-10-17
2751715 unresolved external symbol 에러... 이룩 2026-10-17
2751686 변수 설정에 관한 질문입니다. 꽃달 2026-10-17
2751655 자료구조 연습문제 한무릎 2026-10-17
2751631 gets 함수 질문이요. (4) 해늘 2026-10-16
2751553 퀵정렬 소스인데 주석좀 달아주세요 (1) 싴흐한세여니 2026-10-16
2751528 저기 이거하는법좀 질문.. (2) 가람슬기 2026-10-15
<<  이전  1 2 3 4 5 6 7 8 9 10  다음  >>

수다닷컴 | 여러분과 함께하는 수다토크 커뮤니티 수다닷컴에 오신것을 환영합니다.
사업자등록번호 : 117-07-92748 상호 : 진달래여행사 대표자 : 명현재 서울시 강서구 방화동 890번지 푸르지오 107동 306호
copyright 2011 게시글 삭제 및 기타 문의 : clairacademy@naver.com