목차
자료구조 - 순환과 반복
1. 팩토리얼계산
2. 예제프로그램 함수p()
3. 최대 공약수
4. Horner's Rule
5. 거듭제곱
6. 피보나치 수열
1. 팩토리얼계산
2. 예제프로그램 함수p()
3. 최대 공약수
4. Horner's Rule
5. 거듭제곱
6. 피보나치 수열
본문내용
wer;
cout << "n차 입력 : ";
cin >> n;
a= new double[n];
cout << "계수 입력 : ";
for(int i=n ; i>=0 ; i--)
{cin >> a[i];}
cout << "x 입력: ";
cin >> x;
answer=horner(x,a,n);
cout << answer << endl;
}
5. 거듭제곱
◎ 반복
#include
using namespace std;
double slow_power(double x,int n)
{
double r=1.0;
for(i=0 ;i
r = r * x;
return r;
}
void main()
{
double x,n,answer;
cout << "x 입력: ";
cin >> x;
cout << "n 입력: ";
cin >> n;
answer = slow_power(x,n);
cout << "x 의 n제곱: " << answer << endl;
}
◎ 순환 1
#include
using namespace std;
double power(double x,int n)
{
if(n==0)
return 1;
else if(n%2==0)
return power(x*x,n/2);
else if(n%2==1)
return x * power(x*x, (n-1)/2);
}
void main()
{
double x,n,answer;
cout << "x 입력: ";
cin >> x;
cout << "n 입력: ";
cin >> n;
answer = power(x,n);
cout << "x 의 n제곱: " << answer << endl;
}
◎ 순환 2
#include
using namespace std;
double power(double x,int n)
{
if( n==0 )
return 1;
else if ( n%2==0 )
return power(x*x, n/2);
else
return x * power(x*x, (n-1)/2);
}
void main()
{
double x,n,answer;
cout << "x 입력: ";
cin >> x;
cout << "n 입력: ";
cin >> n;
answer = power(x,n);
cout << "x 의 n제곱: " << answer << endl;
}
◎ 순환 3
#include
using namespace std;
double power4(double x, int n)
{
if ( n < 2)
return ( n == 0 ? 1.0 :n == 1 ? x : 1.0/power4(x, -n));
else
{
double y = power4(x, (n >> 1));
y *= y;
return n & 1 ? y * x : y;
}
}
void main()
{
double x,n,answer;
cout << "x 입력: ";
cin >> x;
cout << "n 입력: ";
cin >> n;
answer = power4(x,n);
cout << "x 의 n제곱: " << answer << endl;
}
6. 피보나치 수열
◎ 순환
#include
using namespace std;
int fib(int n)
{
if(n==0) return 0;
if(n==1) return 1;
return ( fib(n-1) + fib(n-2) );
}
void main()
{
int n,answer;
cout << "n 입력 : ";
cin >> n;
answer=fib(n);
cout << "피보나치 수열의 " << n << " 번째 수(초항을 0번째로 간주) : " << answer << endl;
}
◎ 반복
#include
using namespace std;
int fib_iter(int n)
{
if (n<2)
return n;
else
{
int i, temp, current=1, last=0;
for(i=2;i<=n;i++)
{
temp= current;
current +=last;
last = temp;
}
return current;
}
}
void main()
{
int n,answer;
cout << "n 입력 : ";
cin >> n;
answer=fib_iter(n);
cout << "피보나치 수열의 " << n << " 번째 수(초항을 0번째로 간주) : " << answer << endl;
}
cout << "n차 입력 : ";
cin >> n;
a= new double[n];
cout << "계수 입력 : ";
for(int i=n ; i>=0 ; i--)
{cin >> a[i];}
cout << "x 입력: ";
cin >> x;
answer=horner(x,a,n);
cout << answer << endl;
}
5. 거듭제곱
◎ 반복
#include
using namespace std;
double slow_power(double x,int n)
{
double r=1.0;
for(i=0 ;i
return r;
}
void main()
{
double x,n,answer;
cout << "x 입력: ";
cin >> x;
cout << "n 입력: ";
cin >> n;
answer = slow_power(x,n);
cout << "x 의 n제곱: " << answer << endl;
}
◎ 순환 1
#include
using namespace std;
double power(double x,int n)
{
if(n==0)
return 1;
else if(n%2==0)
return power(x*x,n/2);
else if(n%2==1)
return x * power(x*x, (n-1)/2);
}
void main()
{
double x,n,answer;
cout << "x 입력: ";
cin >> x;
cout << "n 입력: ";
cin >> n;
answer = power(x,n);
cout << "x 의 n제곱: " << answer << endl;
}
◎ 순환 2
#include
using namespace std;
double power(double x,int n)
{
if( n==0 )
return 1;
else if ( n%2==0 )
return power(x*x, n/2);
else
return x * power(x*x, (n-1)/2);
}
void main()
{
double x,n,answer;
cout << "x 입력: ";
cin >> x;
cout << "n 입력: ";
cin >> n;
answer = power(x,n);
cout << "x 의 n제곱: " << answer << endl;
}
◎ 순환 3
#include
using namespace std;
double power4(double x, int n)
{
if ( n < 2)
return ( n == 0 ? 1.0 :n == 1 ? x : 1.0/power4(x, -n));
else
{
double y = power4(x, (n >> 1));
y *= y;
return n & 1 ? y * x : y;
}
}
void main()
{
double x,n,answer;
cout << "x 입력: ";
cin >> x;
cout << "n 입력: ";
cin >> n;
answer = power4(x,n);
cout << "x 의 n제곱: " << answer << endl;
}
6. 피보나치 수열
◎ 순환
#include
using namespace std;
int fib(int n)
{
if(n==0) return 0;
if(n==1) return 1;
return ( fib(n-1) + fib(n-2) );
}
void main()
{
int n,answer;
cout << "n 입력 : ";
cin >> n;
answer=fib(n);
cout << "피보나치 수열의 " << n << " 번째 수(초항을 0번째로 간주) : " << answer << endl;
}
◎ 반복
#include
using namespace std;
int fib_iter(int n)
{
if (n<2)
return n;
else
{
int i, temp, current=1, last=0;
for(i=2;i<=n;i++)
{
temp= current;
current +=last;
last = temp;
}
return current;
}
}
void main()
{
int n,answer;
cout << "n 입력 : ";
cin >> n;
answer=fib_iter(n);
cout << "피보나치 수열의 " << n << " 번째 수(초항을 0번째로 간주) : " << answer << endl;
}
키워드
추천자료
(자료구조) 스택을 이용한 후위연산 소스
(자료구조) 단순 연결리스트를 이용한 삽입 & 삭제 & 검색 소스
(자료구조) 이중연결리스트를 이용한 삽입 & 삭제 & 검색 소스
(자료구조) 큐를 이용한 환상형 연결리스트 삽입 & 삭제 소스
(자료구조) 스레드 이진트리 중위운행 결과 소스
(자료구조) 트리를 이용한 비순환적 중위운행 결과 소스
[자료구조]Infix로 된 수식을 Prefix와 Postfix로 변환 시키는 프로그램입니다.(C언어)
[자료구조] 배열을 이용한 다항식의 덧셈 곱셈 연산
[자료구조, Algorithm] 외부정렬(External Sort) PPT version
[자료구조]다익스트라 최단 경로 알고리즘
[자료구조]포인터 배열 삽입 정렬
[자료구조] 정렬되지 않는 배열 (우선 순위 큐)
[자료구조] 스택 함수 구현
[자료구조] 연결 리스트를 이용한 오름차순 정리
소개글