1189: [기초-재귀설계] 재귀로 1부터 n까지 한 줄로 출력하기(설명) (C)
[만든사람 : 전현석, 정종광(확인), 배준호(확인) (2017)]
문제 설명
본 문제는 C 의 빠른 기초 학습을 위해 설계된 문제로서 C 코드 제출을 기준으로 설명되어 있습니다.
------
*주의사항 : 이 문제는 재귀 설계 문제로서 반복문을 사용한 코드는 채점이 되지 않습니다.
------
한 정수 n을 입력받아 1부터 n까지 한 줄로 출력하시오.
(단, 반복문은 사용할 수 없다.)
참고
"모든 반복은 재귀를 이용해 만들 수 있다!"
프로그래밍언어에서의 재귀 함수는?
- 함수를 정의할 때, 자기 자신을 호출해 사용하는 형태로 정의된 함수라고 할 수 있으며
- 3가지 종류와 2가지 방향으로 크게 구분지어 생각해 볼 수 있다.
- 3가지 종류 : 단순/다중/복합
- 2가지 방향 : 하향식/상향식
단순 재귀는?
함수를 정의하는 도중에 자기 자신을 1번 호출하는 방법이다.
하향식 방법은?
큰 문제의 답을 얻기 위해서 이전에 얻어낸 같은 형태의 보다 작은 문제의 해결 결과를 이용하는 방법이다.
1부터 n까지 한 줄로 출력하는 문제는
다음과 같은 단순 재귀 하향식 방법으로 설계하여 해결할 수 있다.
1부터 n까지 출력하는 문제의 하향식 재귀 설계 방법(예시)
- 하향식
1부터 n까지 출력하는 문제는 1부터 (n-1)까지 이미 출력된 상태에서 수 n만 더 출력하는 문제로 바꿀 수 있다.
1부터 (n-1)까지 출력하는 문제는 1부터 (n-2)까지 이미 출력된 상태에서 수 (n-1)만 더 출력하는 문제로 바꿀 수 있다.
...
수 1을 출력하는 문제는 1만 출력하면 된다.
하향식 설계는 어떤 문제를
그와 똑같은 형태의 보다 작은 문제를 해결한 결과들을 이용해 해결할 수 있도록 설계하는 방법이라고 할 수 있다.
재귀 함수를 정확하게 설계하기 위해서는
1. 가장 먼저! : 자신이 만들고자하는 "재귀 함수의 의미"를 명확하게 생각한 후,
2. 그 다음에 : "큰 문제와 작은 문제 사이의 관계(하향식)"나 "현재 상태에서 다음 상태로의 변화관계(상향식)"와 같은
관계를 분석해 작성하고,
3. 마지막에 : "가장 작은 문제 상태"나 "가장 큰 문제 상태"를 생각해
재귀 호출의 중단 조건과 그 상태에서의 리턴 값을 작성해 넣으면 된다.
------
*주의사항 : 이 문제는 재귀 설계 문제로서 반복문을 사용한 코드는 채점이 되지 않습니다.
------
한 정수 n을 입력받아 1부터 n까지 한 줄로 출력하시오.
(단, 반복문은 사용할 수 없다.)
참고
"모든 반복은 재귀를 이용해 만들 수 있다!"
프로그래밍언어에서의 재귀 함수는?
- 함수를 정의할 때, 자기 자신을 호출해 사용하는 형태로 정의된 함수라고 할 수 있으며
- 3가지 종류와 2가지 방향으로 크게 구분지어 생각해 볼 수 있다.
- 3가지 종류 : 단순/다중/복합
- 2가지 방향 : 하향식/상향식
단순 재귀는?
함수를 정의하는 도중에 자기 자신을 1번 호출하는 방법이다.
하향식 방법은?
큰 문제의 답을 얻기 위해서 이전에 얻어낸 같은 형태의 보다 작은 문제의 해결 결과를 이용하는 방법이다.
1부터 n까지 한 줄로 출력하는 문제는
다음과 같은 단순 재귀 하향식 방법으로 설계하여 해결할 수 있다.
1부터 n까지 출력하는 문제의 하향식 재귀 설계 방법(예시)
- 하향식
1부터 n까지 출력하는 문제는 1부터 (n-1)까지 이미 출력된 상태에서 수 n만 더 출력하는 문제로 바꿀 수 있다.
1부터 (n-1)까지 출력하는 문제는 1부터 (n-2)까지 이미 출력된 상태에서 수 (n-1)만 더 출력하는 문제로 바꿀 수 있다.
...
수 1을 출력하는 문제는 1만 출력하면 된다.
하향식 설계는 어떤 문제를
그와 똑같은 형태의 보다 작은 문제를 해결한 결과들을 이용해 해결할 수 있도록 설계하는 방법이라고 할 수 있다.
재귀 함수를 정확하게 설계하기 위해서는
1. 가장 먼저! : 자신이 만들고자하는 "재귀 함수의 의미"를 명확하게 생각한 후,
2. 그 다음에 : "큰 문제와 작은 문제 사이의 관계(하향식)"나 "현재 상태에서 다음 상태로의 변화관계(상향식)"와 같은
관계를 분석해 작성하고,
3. 마지막에 : "가장 작은 문제 상태"나 "가장 큰 문제 상태"를 생각해
재귀 호출의 중단 조건과 그 상태에서의 리턴 값을 작성해 넣으면 된다.
입력 설명
int 형 정수(n) 1개가 입력된다.
(1<=n<=100)
(1<=n<=100)
출력 설명
1부터 n까지 정수를 공백을 두고 한 줄로 출력한다.
입력 예시 Copy
5
출력 예시 Copy
1 2 3 4 5
도움
기초100제(c)2 v1.0 : 정보교사 커뮤니티 @컴퓨터과학사랑(CSL)
- 중고등학교 정보 선생님들과 함께 정보수업/방과후/동아리활동 등을 통해 재미있게 배워보세요.
- 모든 내용 및 이미지들은 저작자와의 협의 없이 무단으로 사용할 수 없습니다.
- 중고등학교 정보 선생님들과 함께 정보수업/방과후/동아리활동 등을 통해 재미있게 배워보세요.
- 모든 내용 및 이미지들은 저작자와의 협의 없이 무단으로 사용할 수 없습니다.