재귀함수 c
#include <stdio.h>
#pragma warning (disable : 4996)
void multitable(int num)
{
if (num == 0)
{
printf("함수종료\n");
return;
}
multitable(num -1);
printf("2 * %d = %d\n", num, 2 * num);
return;
}
int main()
{
multitable(9);
printf("main 종료");
return 0;
}
거듭제곱 c
#include <stdio.h>
#pragma warning (disable : 4996)
double power(int x, int y)
{
if (y == 0)
return 1;
return x * power(x, y-1);
}
int main()
{
int base, exponent;
printf("밑수 입력 : ");
scanf("%d", &base);
printf("지수 입력 : ");
scanf("%d", &exponent);
printf("%d^%d = %f\n", base, exponent, power(base, exponent));
return 0;
}
팩토리얼 c
#include <stdio.h>
#pragma warning (disable : 4996)
double factorial(int n)
{
if (n <= 1)
{
printf("%d = ", n);
return 1;
}
printf("%d * ", n);
return n * factorial(n - 1);
}
int main()
{
int num;
double result;
printf("자연수 입력 : ");
scanf("%d", &num);
printf("%d! = ", num);
result = factorial(num);
printf("%f\n", result);
return 0;
}
최대공약수 c
#include <stdio.h>
#pragma warning (disable : 4996)
int gcd(int x, int y)
{
if (y == 0)
{
return x;
}
return gcd(y, x % y);
}
int main()
{
int n1, n2, result;
printf("최대 공약수를 구할 정수 2개 입력 : ");
scanf("%d %d", &n1, &n2);
result = gcd(n1, n2);
printf("%d와 %d의 최대 공약수는 %d입니다.\n", n1, n2, result);
return 0;
}
이진법식 c
#include <stdio.h>
#include <stdlib.h>
#pragma warning (disable : 4996)
int binarySearch(int* arr, int begin, int end, int target);
int binarySearchLoop(int* arr, int begin, int end, int target);
int main(void)
{
int arr[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int searchData;
printf("\n찾는 값 입력: ");
scanf("%d", &searchData);
int index;
index = binarySearchLoop(arr, 0, 9, searchData);
if (index != -1)
printf("\n\n\t\t찾는 값은 arr[%d]번째에 저장되어 있습니다.\n", index);
else
printf("\n\n\t\t찾는 값은 존재하지 않습니다.\n");
return 0;
}
int binarySearch(int* arr, int begin, int end, int target)
{
int mid = (begin + end) / 2;
if(begin > end)
return -1;
if(arr[mid] == target)
return mid;
else if(arr[mid] < target)
return binarySearch(arr, mid + 1, end, target);
else
return binarySearch(arr, begin, mid - 1, target);
}
int binarySearchLoop(int* arr, int begin, int end, int target)
{
int mid;
while (begin <= end)
{
mid = (begin + end) / 2;
if(arr[mid] == target)
return mid;
else if(arr[mid] < target)
begin = mid + 1;
else
end = mid - 1;
}
return -1;
}
피오나치수열
#include <stdio.h>
#include <stdlib.h>
#pragma warning (disable : 4996)
double mz[101] = { 0, 1, 1 };
double fibo(int n)
{
if (mz[n] != 0)
return mz[n];
mz[n] = fibo(n - 1) + fibo(n - 2);
return mz[n];
}
double fiboLoop(int n)
{
for(int i = 3; i < n; i++)
{
mz[i] = mz[i - 1] + mz[i - 2];
}
return mz[n];
}
int main()
{
int n;
printf("피보나치 수열의 몇 번째 항을 구하시겠습니가? ");
scanf("%d", &n);
double result;
result = fibo(n);
printf("\n\n\t\t%d항의 값은 %.0f입니다.\n", n, result);
return 0;
}