일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 코딩테스트
- 혼자공부하는C언어
- C언어
- PrimePath
- 코딩
- 빅데이터
- 코딩연습
- 소수경로
- 대학교재풀이
- 데이터처리
- c프로그래밍
- 초보
- 도전실전예제
- Algorithm
- 혼공씨
- c++
- 모두를위한 R데이터분석
- 연습문제
- 알고리즘
- 기술
- Python
- IT
- 문제해결
- 코틀린
- 혼공C
- 빅데이터입문
- 모두를위한R데이터분석입문
- c언어문제풀이
- r
- 대학교재
- Today
- Total
Jupitor's Blog
[CㆍC++로 배우는 자료구조론] 04 재귀호출 연습문제 본문
26
가. 1번
나. n이 1000일때부터 1일때까지 1000번 호출. 그리고 Pow2(x, 1)이 Pow2(x,0)까지 호출하기때문에 총 1001번.
다. 호출횟수는
예를들면, n=32이거나 33일 경우 6번 호출. n=31이면 5번 호출.
27.
void Asterisk(int n)
{
if (n == 0) return;
printf("*");
Asterisk(n - 1);
}
28.
void Func(int n)
{
if (n > 3600)
return;
printf("%d\n", n);
Func(2 * n);
printf("%d\n", n);
}
29.
void Func(int n)
{
if (n == 1)
printf(" %d", n);
else
{
Func(n - 1);
printf(" %d", n);
Func(n - 1);
}
}
30.
줄어들거나 늘어날 숫자 하나와,
특정 숫자에서의 마무리. 즉 재귀하지 않는 것.
32.
1
2
3
4
5
6
7
8
9
10
33. left는 p(=a[0])보다 큰걸 찾을때까지 증가
right는 작은걸 찾을때까지 감소
둘이 만나면 브레이크.
둘이 안만나면 멈출때의 left와 right인덱스에 있는 값을 바꾼다.
맨 마지막엔 a[0]와 right인덱스의 값을 바꾼다.
즉 왼쪽에는 a[0]보다 작은, 오른쪽엔 큰 숫자들로 나열한다.
가. 8 0 4 1 3 2 5 7 9 6
나. 4 0 6 1 7 2 5 3 8 9
다. 5 0 1 2 3 4 6 7 8 9
#include<stdio.h>
#define SIZE 10
void swap(int a[], int p1, int p2)
{
int temp = a[p1];
a[p1] = a[p2];
a[p2] = temp;
}
void Func(int n[])
{
int p = n[0];
int left = 1;
int right = SIZE - 1;
while (1)
{
while (left < right && n[left] <= p) left++;
while (left < right && n[right] >= p) right--;
if (left >= right) break;
swap(n, left++, right--);
}
swap(n, 0, right);
for (int i = 0; i < SIZE; i++)
printf("%d ", n[i]);
}
int main() {
int a[] = { 5,0,6,1,7,2,8,3,9,4 };
int b[] = { 8,0,6,1,7,2,5,3,9,4 };
int c[] = { 4,9,8,7,6,5,3,2,1,0 };
Func(c);
return 0;
}
35. Recurse(3*n + 1)은 n=2k+1 , 홀수라고 가정하면 6K + 3 + 1 = 2(3k+2) 가 되어 무조건 짝수가 된다.
이러면 if(n % 2 == 0)
Recurse( n / 2 ) ; 를 실행하는데 문제는 n이 0이 되어도 계속 실행이 된다.
따라서 If(n == 0) return; 을 맨 윗줄에 추가해줘야 한다.
36.
N/2
N%2
'IT > CㆍC++로 배우는 자료구조론 연습문제' 카테고리의 다른 글
[CㆍC++로 배우는 자료구조론] 06 스택 연습문제 (0) | 2018.12.14 |
---|---|
[CㆍC++로 배우는 자료구조론] 05 리스트 연습문제 (0) | 2018.12.05 |
[C언어] List (0) | 2018.12.04 |
[CㆍC++로 배우는 자료구조론] 04 재귀호출 연습문제(2) (0) | 2018.12.02 |
[c언어]pivot (0) | 2018.12.01 |