재귀함수 공부중 팩토리얼계산법에 관한 질문입니다.
옆집꼬마야
2023.04.01
#includestdio.h
int f(int);
int main(void)
{
int val;
int result;
printf(정수 입력: );
scanf(%d, &val);
if(val0)
{
printf(0 이상을 입력해야 합니다. \n);
return 1;
}
result=f(val);
printf(%d!의 계산 결과 : %d\n, val, result);
}
int f(int n)
{
if(n==0)
return 1;
else
return n*f(n-1);
}
팩토리얼 계산입니다. 1이나 2, 3의 팩토리얼 은 저기 int f(int n)의 함수에서 계산이 가능하지만 그이상 함수는 반복문이 필요하지 않나요? 반복문이 없는데도 팩토리얼 계산이 되는게 이해가 안갑니다.
예를 들어서 5의 팩토리얼을 구하면 5 * 4 * 3 * 2 * 1 이런식으로 계산이 되는거자나요? 그런데 반복문이 없이도 팩토리얼이 구해지는게 이상합니다. 저 함수대로 하면은 5*f(5-1) 이잖아요? 그말은 5 * 4라는 말인데 말이죠..
-
Sweet
f(5)
5 * f(4)
5 * 4 * f(3)
5 * 4 * 3 * f(2)
5 * 4 * 3 * 2 * f(1)
5 * 4 * 3 * 2 * 1
재귀함수라는 특수한 성질때문에 소스가 이렇게 간단해지는겁니다.