반응형
팩토리얼을 구하는 재귀함수
#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; }
반응형