728x90
#include <stdio.h>
#include <stdlib.h>
int main()
{
// 재귀적으로 호출되는 팩토리얼 함수
int factorial(int n)
{
printf("factorial(%d)\n",n);
if (n<=1) return 1;
else return(n*factorial(n-1));
}
// 한수 홏출
factorial(5);
// 팩토리얼 계산 함수
int factorial_iter(int n)
{
int i, result=1;
for(i=1;i<=n;i++){
result=result*i;
}
printf("factorial %d : %d",n,result);
return(result);
}
// 함수 호출
factorial_iter(5);
printf("\n");
// 거듭제곱 함수 (반복을 사용)
double slow_power(double x, int n)
{
int i;
double result=1.0;
for (i=0; i<=n; i++){
result = result*x;
}
printf("%f의 %d제곱 = %f", x, n, result);
return (result);
}
// 함수 호출
slow_power(3.0,5);
printf("\n");
//거듭제곱 함수 (순환을 사용)
double power(double x, int n)
{
double result=1.0;
for (int i=0; i<=0; i++)
{
if (n==0) {
printf(1,"\n");
return 1;}
else if ((n%2)==0){
printf("power(%f*%f,%d/2) \n",x,x,n);
return power(x*x,n/2);}
else {
printf("%f*power(%f,(%d-1)/2) \n",x,x,n);
return x*power(x,(n-1)/2);}
}
return (result);
}
// 함수 호출
power(3.0,5);
// 피보나치 수열 : 앞의 두수를 더한수가 다음 수 (순황적인 피보나치 수열)
int fibo1(int n) {
if (n==0) return 0;
if (n==1) return 1;
return (fibo1(n-2) + fibo1(n-1));
}
// 함수 출력
printf("%d", fibo1(7));
printf("\n\n");
// 반복적인 피보나치 수열
int fibo2(int n) {
if(n==0) return 0;
if(n==1) return 1;
int pp = 0;
int p = 1;
int result = 0;
// n>=2인 경우 부터 적용 , 매번 계산마다 처음부터 계산
for (int i = 2; i <= n; i++){
result = p + pp;
pp = p;
p = result;
}
return result;
}
// 함수 출력
printf("%d", fibo2(7));
printf("\n\n");
return 0;
}
/*출력값
factorial(5)
factorial(4)
factorial(3)
factorial(2)
factorial(1)
factorial 5 : 120
3.000000의 5제곱 = 729.000000
3.000000*power(3.000000,(5-1)/2)
power(3.000000*3.000000,2/2)
9.000000*power(9.000000,(1-1)/2)
13
13
*/
728x90
'Data structure' 카테고리의 다른 글
[C언어로 쉽게 풀어쓴 자료구조] Chapter 3 - 동적 메모리 (0) | 2022.02.17 |
---|---|
[C언어로 쉽게 풀어쓴 자료구조] Chapter 2 순환 - 하노이 탑 (0) | 2022.02.15 |
기수 정렬 (radix sort) (0) | 2021.07.18 |
힙 / 힙 정렬 (Heap / Heap Sort) (0) | 2021.07.17 |
정렬2 (Sorting) (0) | 2021.07.12 |