재귀 함수를 사용하여 팩토리얼 을 계산
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
반응형
'정보처리,전산 > 코딩 : 문제해결' 카테고리의 다른 글
배열에서 각 요소보다 작은 요소들의 수 (0) | 2024.04.19 |
---|---|
원형 큐 circular queue (0) | 2024.04.10 |
완전수 (0) | 2024.03.12 |
java. 상속과 생성자 호출에 관한 문법 (0) | 2024.03.01 |
자연수 N까지 합의 제곱과 제곱의 합의 차이 (0) | 2023.12.31 |