Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Archives
Today
Total
관리 메뉴

메모장

C언어 복습 9 (입력받은 숫자로 카운트다운 - 재귀함수) 본문

C언어 복습

C언어 복습 9 (입력받은 숫자로 카운트다운 - 재귀함수)

Captic 2019. 6. 18. 10:13

참고: 정덕 - <컴맹을 위한 C언어>

♨ 개인적 해석이 다분한 글임으로, 인지하지 못한 오류가 있을 수 있습니다 

 

▣ 재귀함수

예) void func()

{

       func();

       return;

}

 

=> func함수를 호출 -> 자기 자신을 다시 호출 -> 무한 반복: return은 실행되지 않는다

 

-> 종료조건을 넣어서 해결

 

 

▣ 재귀함수를 이용한 카운트다운 프로그램

 - 이전 프로그램의 순서

   1. 사용자로부터 숫자를 입력 받는다

   2. 숫자를 화면에 출력

   3. 숫자를 1 감소

   4. 2~3번을 입력받은 숫자만큼 반복한다

 

=> 재귀함수를 이용한 카운트다운 프로그램 순서

  ① 사용자로부터 숫자를 입력

  ② 숫자가 0이하면 종료, 아니면 출력

  ③ 숫자를 1감소

  ④ 2~3번 반복

 

▣ 위의 작성된 프로그램 순서를 생각하며 카운트다운 프로그램을 만들어본다

 

 1. 카운트다운 재귀함수 선언 (정의는 main 하단에)

 

2. 숫자를 입력받는다

 

 3. 카운트다운 재귀함수 호출

 

 4. 카운트다운 재귀함수 정의

 

※ 재귀함수 내 카운트다운은 if-else문으로도 표현가능

 

...더보기

참고   

1. if문이나 반복문의 문장이 한 문장이면 중괄호 생략 가능

     예) if(a<=0){ return;

                  =

           if(a<=0) return;

 

2. "a=a-1" 과 "a-=1" 과 "a--"은 동일한 의미

   '++' 와 '--'은 증가면산자 '++'은 변수의 값을 1 증가 // '--'은 변수의 값을 1 감소

   ('c++'의 '++'도 동일한 의미 - C언어에 객체지향 개념을 접목시킨 언어)

 

3 a--과 --a

  --a는 전위증감, a--은 후위증감

  증감을 먼저하느냐 참조를 먼저하느냐의 순서차이

 

  전위증감(--a)은 1을 (더하거나) 뺀 후 값을 참조

    예) 10에서 1을 뺀 후 a에 대입

  후위증감(a--)은 참조한 후 1을 (더하거나) 뺀다

    예) a에 10를 대입하고 1을 뺀다

증감 후 다시 출력해보면 차이를 알 수 있다

 

재귀함수 정의에서

변경이 가능하다

  

재귀함수의 흐름

예) count(3)을 실행하였다 가정한다면

void count(3){

   if(3<=0) return;       // 3이 0보다 크기 때문에 return문이 실행되지 않고 밑으로 내려간다

   printf("%d\n", a);     // 3을 출력

   count(--a);            // --3이기 때문에 2, 즉 count(2)가 실행

   return 0;              // count(2)가 실행 완료되지 않았기 때문에 실행되지 않는다

}			 // 이런 신세계를 지금 발견하다니......

정답 (코드 총 정리)

...더보기
코드 블럭은 안이뻐서 무식하게 캡쳐하는게 나은듯 합니다

코드블럭 하이라이트 바꾸는 것도 있던데 구 ㅣ찬