[ 재귀함수 이해하기 - 예문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

 

[ 9-3번 소스보기]

더보기
#include <stdio.h>
void go(int);
int main()
{
	go(1);
	return 0;
}
void go(int n)
{
	if(n > 5) return;
	
	printf("%d ", n);
	for(int i=1;i<=n;i++)
		printf("*");
	printf("\n");
	
	go(n+1);
	
	printf("%d ", n);
	for(int i=1;i<=n;i++)
		printf("*");
	printf("\n");
}

 

[ 9-8번 소스보기 ]

더보기
#include <stdio.h>
void rec(int);
int main()
{
	rec(1);
	return 0;
}
void rec(int n)
{
	if(n>5) return;
	
	for(int i=0;i<5-n;i++)
		printf(".");
	for(int i=0;i<n;i++)
		printf("%d", n);
	printf("\n");
	
	rec(n+1);
	
	for(int i=0;i<5-n;i++)
		printf(".");
	for(int i=0;i<n;i++)
		printf("%d", n);
	printf("\n");
	
}

 

 

Posted by 명문코딩컴퓨터
,