반응형
c언어 메모리 스택 (stack) - 함수 재귀호출 (재귀함수)
ex. 팩토리얼 (factorial) 함수 재귀호출 (recursive)
기존 재귀호출 방식
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | /* Factorial of input number recursive */ #include <stdio.h> // Get integer from terminal int getInputNumber() { int num = 0; printf("Input an integer\n>>> "); scanf("%d", &num); return num; } // Call factorial recursively if argument is bigger than 0 int factorial(int num) { return num > 0 ? num * factorial(num - 1) : 1; } int main() { int num = getInputNumber(); int result = factorial(num); printf("Factorial of %d is %d\n", num, result); } |
recursive factorial function (stack) - 팩토리얼 재귀함수
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | /* Factorial: recursive function */ #include <stdio.h> // Get integer from terminal int getInputNumber() { int num = 0; printf("Input an integer\n>>> "); scanf("%d", &num); return num; } // Call factorial recursively int factorial(int num) { if (num == 0) return 1; int f = factorial(num - 1); // stack: recursive function return num * f; } int main() { int num = getInputNumber(); int result = factorial(num); printf("Factorial of %d is %d\n", num, result); } |
반응형
'C 언어 > C언어 기초' 카테고리의 다른 글
[C언어 #45] 메모리 할당 (malloc) - 구조체 (struct) 초기화 (0) | 2020.07.16 |
---|---|
[C언어 #44] 메모리 할당 해제 (malloc / free) - 구조체 (struct) 적용 (0) | 2020.07.16 |
[C언어 #42] 메모리 할당 해제 (malloc / free) - 문자열 복사 (0) | 2020.07.14 |
[C언어 #41] 배열에 입력한 숫자의 합 (0) | 2020.07.12 |
[C언어 #40] 표준체중 비만도 (obesity) 구하기 (0) | 2020.07.11 |