[ 재귀함수 이해하기 ] 1. 다음 프로그램의 결과값은?

#include <stdio.h>
int sum(int);

int main()
{

     int hap;
      hap = sum(5);
      printf("hap = %d\n", hap);
      return 0;
}

int sum(int n2)
{
     if(n2==1) return 1;
     else return n2 + sum(n2-1);
}

 

[ 재귀함수 이해하기 ] 2. 다음 프로그램의 결과값은?

 

#include <cstdio>
int go(int);

int main()
{
      printf("go = %d\n",go(7));
      return 0;
}

int go(int n)
{
      return (n==1) ? 1 : n+go(n-2);    // 삼항연산자 -  조건 ? 참 : 거짓 
}

 

[ 재귀함수 이해하기 ] 3. 다음 프로그램의 결과값은?

#include <cstdio>
int power(int, int);

int main()
{
      int n;
      printf("power = %d\n",power(5,3));
      return 0;
}

int power(int x, int y)
{
      if(y == 0) return 1;
      else return x * power(x, y-1);
}

 

[ 재귀함수 이해하기 ] 4. 다음 프로그램의 결과값은?

 

#include <cstdio>
int quiz(int, int);

int main()
{
      int n;
      n = quiz(2, 5);
      printf("quiz = %d\n", n);
      return 0;
}

int quiz(int n, int m)
{
      if(n == m) return 1;
      else if(n > m) return 0;
      else return n + quiz(n+1, m);
}

 

[ 재귀함수 이해하기 ] 5. 다음 프로그램의 결과값은?

 

#include <cstdio>
int go(int);

int main()
{
      int n;
      printf("go = %d\n",go(8));
      return 0;
}

int go(int x)
{
      if(x == 1) return 1;
      else if(x==2) return 2; //if( x==1 || x==2 ) return x;
      else return go(x-1) + go(x-2);
}

 

[ 재귀함수를 반복문처럼 사용하기 - 예제 1 ] 재귀함수를 이용해서 1부터 10까지 출력해보세요

#include <cstdio>
void go(int);

int main()
{
    int n;
    go(1);
    return 0;
}

void go(int x)
{
    if(x >10) return;
    printf("%d ", x);
    go(x+1);
}

[문제1] 10부터 1까지 출력해보세요

[문제2] 2부터 20까지 짝수만 출력해보세요

[문제3] 1부터 19까지 홀수만 출력해보세요

[문제4] 1부터 main함수에서 입력받은 수 까지 출력해 보세요

[문제5] main함수에서 입력받은 수부터 1까지 거꾸로 출력해 보세요

[문제6] main함수에서 입력받은 수의 구구단을 출력해 보세요

[문제7] 2단부터 9단까지 출력해 보세요

[ 재귀함수 이해하기 - 예문1 ] 다음 프로그램의 결과를 생각해 보세요

#include <cstdio>
void go(int);

int main()
{
    int n;
    go(1);
    return 0;
}

void go(int x)
{
    if(x > 10) return;
    printf("%d ", x);
    go(x+1);
    printf("(%d) ", x);
}

 

[ 재귀함수 이해하기 - 예문2 ] 다음 프로그램의 결과를 생각해 보세요

 

#include <cstdio>
void go(int);

int main()
{
    int n;
    go(24);
    return 0;
}

void go(int x)
{
    if(x == 0) return;
    printf("%d ", x);
    go(x/2);
    printf("(%d) ", x);
}

※ 위 예문을 이해해보고 다음 문제를 풀어보세요 

 

[ 재귀함수 이해하기 - 문제 1 ] 다음과 같이 재귀함수를 이용해서 출력하시오 

※ 안된다고 너무 쉽게 포기하지 말고 자꾸 해봐야 실력이 늘어요 하다 하다 정 안되면 아래 소스를 보면서 이해해보세요^^

[ 9-1번]
5
4
3
2
1
==1==
==2==
==3==
==4==
==5==
[ 9-2번]
1
2
3
4
5
==5==
==4==
==3==
==2==
==1==
[ 9-3번]
1 *
2 **
3 ***
4 ****
5 *****
5 *****
4 ****
3 ***
2 **
1 *

 

[ 재귀함수 이해하기 - 문제 2 ] 다음과 같이 재귀함수를 이용해서 출력하시오

[ 9-4번]
*
***
*****
*******
*********
***********
***********
*********
*******
*****
***
*
[ 9-5번]
3 * 1 = 3
3 * 2 = 6
3 * 3 = 9
3 * 4 = 12
3 * 5 = 15
3 * 6 = 18
3 * 7 = 21
3 * 8 = 24
3 * 9 = 27
3 * 9 = 27
3 * 8 = 24
3 * 7 = 21
3 * 6 = 18
3 * 5 = 15
3 * 4 = 12
3 * 3 = 9
3 * 2 = 6
3 * 1 = 3
[ 9-6번]
**********
**********
**********
**********
**********
##########
##########
##########
##########
##########

 

[ 재귀함수 이해하기 - 문제 3 ] 다음과 같이 재귀함수를 이용해서 출력하시오

[ 9-7번]
1
3
5
7
9
10
8
6
4
2
[ 9-8번]
....1
...22
..333
.4444
55555
55555
.4444
..333
...22
....1
[ 9-9번]
55555
.4444
..333
...22
....1
....1
...22
..333
.4444
55555

 

Posted by 명문코딩컴퓨터
,