연재 완료/C Lang 예제코드 모음

C언어 함수 주요예제 4. (재귀함수 예제들)

라이피 (Lypi) 2018. 5. 18. 16:45
반응형

팩토리얼을 구하는 재귀함수

#include <stdio.h>

long factorial(long n);

int main()
{
	printf("7! = %d \n", factorial(7));
}

long factorial(long n)
{
	if (n == 0) {
		return 1; }
	else { 
		return n * factorial(n - 1); }
}

//별 의미 없지만 재귀함수의 개념을 이해하기에는 가장 좋은 팩토리얼 함수.



스택의 원리를 이용하여 입력받은 문자열을 거꾸로 출력해주는 함수

#include <stdio.h>

void print_back();

int main()
{
	printf("문자열을 입력하세요 : "); print_back();
	printf("\n");
}

//stack의 원리를 이용한 재귀함수
void print_back()
{
	int ch;
	if ((ch = getchar()) != '\n') { //한글자를 입력받고 개행문자인지 확인
		print_back();				// 개행문자가 아니면 재귀호출
	}
	putchar(ch);					// 재귀호출이 끝나면 입력받은 문자 표시 
}



누적합을 구하는 함수

#include <stdio.h>

long cumulation(long number);

int main()
{
	int num;

	printf("1부터 n까지의 누적합을 구합니다. \n");
	printf("n값을 입력하세요 : "); scanf_s("%d", &num);

	printf("1부터 %d 까지의 합은 %ld입니다. \n", num, cumulation(num));
}

long cumulation(long number)
{

	return number == 1 ? 1 : number + cumulation(number - 1);

}



피보나치수를 구하는 재귀함수

#include <stdio.h>

long fibonacci(long number);

int main()
{
	int num;

	printf("1부터 n까지의 피보나치 수를 구합니다. \n");
	printf("n값을 입력하세요 : "); scanf_s("%d", &num);

	for (int i = 0; i <= num; i++) {
		printf("%d번째 피보나치 수는 %ld입니다. \n", i, fibonacci(i));
	}
}

//피보나치수를 구하는 재귀함수
long fibonacci(long number)
{
	switch (number) {
	case 0:
		return 0;

	case 1:
		return 1;

	default:
		return (fibonacci(number - 1) + fibonacci(number - 2));
	}
}



제곱을 구하는 재귀함수 (math.h에 pow라는 몇배 좋은 함수가 있지만...)

#include <stdio.h>

double power(double val, unsigned pow);

int main()
{
	double val;
	unsigned pow;

	printf("n의 a승을 구합니다. \n");
	printf("n의 값을 입력하세요 : "); scanf_s("%lf", &val);
	printf("a의 값을 입력하세요 : "); scanf_s("%u", &pow);

	printf("%.2f의 %u승은 %.2f입니다.", val, pow, power(val, pow));
}

double power(double val, unsigned pow)
{
	return pow == 0 ? 1.0 : power(val, pow - 1) * val;
}


반응형