반응형

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 == 0return 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);
}

 

 

반응형