재귀 함수를 사용하여 팩토리얼 을 계산

2024. 3. 12. 18:03정보처리,전산/코딩 : 문제해결

반응형

 

#include <stdio.h>

int f(int n) {
    if (n <= 1)
        return 1;
    else
        return n * f(n - 1);
}

int main() {
    printf("%d", f(7));
    return 0;
}

 

 

호출 순서



1. f(7) 호출: 
   - n = 7이므로 7이 반환되지 않고 7 * f(6)으로 계산
2. f(6) 호출:
   - n = 6이므로 6이 반환되지 않고 6 * f(5)로 계산

3. f(5) 호출:
   - n = 5이므로 5이 반환되지 않고 5 * f(4)로 계산

4. f(4) 호출:
   - n = 4이므로 4이 반환되지 않고 4 * f(3)으로 계산

5. f(3) 호출:
   - n = 3이므로 3이 반환되지 않고 3 * f(2)로 계산

6. f(2) 호출:
   - n = 2이므로 2이 반환되지 않고 2 * f(1)으로 계산

7. f(1) 호출:
   - n = 1이므로 1이 반환

 

 

 

 

 

 


이제 각 호출된 함수에서 반환되는 값을 차례로 역순으로 곱해나가면 결과를 얻을 수 있다.
- `f(1)`의 결과는 1 
- `f(2)`의 결과는 `2 * f(1)`이므로 2
- `f(3)`의 결과는 `3 * f(2)`이므로 6
- `f(4)`의 결과는 `4 * f(3)`이므로 24
- `f(5)`의 결과는 `5 * f(4)`이므로 120
- `f(6)`의 결과는 `6 * f(5)`이므로 720
- `f(7)`의 결과는 `7 * f(6)`이므로 5040

따라서 `f(7)`의 결과는 5040

 

 

 

반응형