목차
자료구조
Report#2
-chapter 4-
02 ~ 38 (짝수 문제 풀이)
Report#2
-chapter 4-
02 ~ 38 (짝수 문제 풀이)
본문내용
조건 : 첫줄은 n, 다음줄은 2n, 그다음 줄은 4n, ... 이처럼 출력하되 3600보다 큰 첫 숫자를 만날 때 까지만 출력한다. 이후 프로그램은 거꾸로 이전에 출력했던 숫자를 역순으로 표시해야 한다.
void NO(int N){
if (N <= 3600){
printf ("%d",N);
NO(2N);
}
printf ("%d",N);
}
30. 재귀 호출 함수 실행을 반드시 끝내기 위해서 존재해야 할 두가지 특성은 무엇인가?
재귀호출시에 종료 조건이 있어야 한다.
분할 정복이 되어야 한다.
32. 다음 프로그램의 출력에 대해 설명하라.
#include
main(){
recursive(1);
}
int recursive (int n){
if (n > 10) return;
printf("%i\n",n);
recursive (n+1);
}
recursive(1)에 의해 1부터 if (n > 10) 에 의해 10까지 출력 된다
34. 문자열 “Korea"가 넘겨질 때 [코드 4-5]의 first와 last값이 어떻게 변하는지 또 어떤 순서로 문자가 찍히는지 확인하라.
=>first = 0, last = 4 K
first = 1, last = 4 o
first = 2, last = 4 r
first = 3, last = 4 e
first = 4, last = 4 a
first = 5, last = 4
36. 10진수 N을 2진수로 변환하여 출력하기 위한 다음 C함수의 빈곳을 완성하라.
void Convert ( int n )P
if (n==0)
return;
else{
Convert( n/2 ); => 2로 나눈 값을 넘겨주고
printf("%d", n%2 ); => 나누었을 때 나머지가 1이면 1출력
}
}
38. 다음 재귀호출 두 개가 서로 완전히 같은지 아닌지를 판단하라. 또, 어떤 표현 방식이 개념적으로 더욱 명확한지 판단하고 그 이유를 제시하라.
void Recurse ( int N ){
if ( N < 1)
return;
else{
Recurse ( N - 1);
cout << N;
}
}
void Recurse ( int N ){
if ( N < 1)
return;
Recurse ( N - 1);
cout << N;
}
}
완전 똑같다
판독력에서는 왼쪽 것이 좋다. 오른쪽은 프로그램상 문제가 없지만 얼핏보면 if문의 내용이
return 뒤에도 계속 되는것 처럼 보인다.
void NO(int N){
if (N <= 3600){
printf ("%d",N);
NO(2N);
}
printf ("%d",N);
}
30. 재귀 호출 함수 실행을 반드시 끝내기 위해서 존재해야 할 두가지 특성은 무엇인가?
재귀호출시에 종료 조건이 있어야 한다.
분할 정복이 되어야 한다.
32. 다음 프로그램의 출력에 대해 설명하라.
#include
main(){
recursive(1);
}
int recursive (int n){
if (n > 10) return;
printf("%i\n",n);
recursive (n+1);
}
recursive(1)에 의해 1부터 if (n > 10) 에 의해 10까지 출력 된다
34. 문자열 “Korea"가 넘겨질 때 [코드 4-5]의 first와 last값이 어떻게 변하는지 또 어떤 순서로 문자가 찍히는지 확인하라.
=>first = 0, last = 4 K
first = 1, last = 4 o
first = 2, last = 4 r
first = 3, last = 4 e
first = 4, last = 4 a
first = 5, last = 4
36. 10진수 N을 2진수로 변환하여 출력하기 위한 다음 C함수의 빈곳을 완성하라.
void Convert ( int n )P
if (n==0)
return;
else{
Convert( n/2 ); => 2로 나눈 값을 넘겨주고
printf("%d", n%2 ); => 나누었을 때 나머지가 1이면 1출력
}
}
38. 다음 재귀호출 두 개가 서로 완전히 같은지 아닌지를 판단하라. 또, 어떤 표현 방식이 개념적으로 더욱 명확한지 판단하고 그 이유를 제시하라.
void Recurse ( int N ){
if ( N < 1)
return;
else{
Recurse ( N - 1);
cout << N;
}
}
void Recurse ( int N ){
if ( N < 1)
return;
Recurse ( N - 1);
cout << N;
}
}
완전 똑같다
판독력에서는 왼쪽 것이 좋다. 오른쪽은 프로그램상 문제가 없지만 얼핏보면 if문의 내용이
return 뒤에도 계속 되는것 처럼 보인다.
추천자료
자료구조 이중 원형 링크드 리스트 의 구현
자료구조 링크드 리스트로 구현한 다항식의 합
자료구조 C로 구현한 트리와 스택. 이를 응용한 산술식의 연산
자료구조를 이용한 주차장 시뮬레이션
자료구조 postfix, infix
자료구조 - 중위식을 후위식으로의 변환후의 값 계산
자료구조 요점정리
자료구조
자료구조의 개요
자료구조(AVL tree, hash 등)을 이용한 패턴 매칭(Pattern Matching) 구현
자료구조(스택, stack)을 이용한 최단 거리 미로 찾기 알고리즘
자료구조 Stack을 이용한 프로그램 소스 괄호 검사
자료구조와 알고리즘 BFS (INTRODUCTION TO ALGORITHMS)
미적분학_2-3장_연습문제풀이