int factorial(int n)
{
if (n<=1)
return 1;
else
return (n*factorial(n-1));
}
void main(){
int n,result;
scanf(%d",&n);
result=factorial(n);
printf("%d\n",result);
}
소스 간략하게만 썼습니다. 우선 저렇게만 해도 돌아는 갈껍니다. result에 factorial값
계산되고요. 이때 탈출 조건은 n이 1이 되었을 때입니다. return 1; 이부분입니다. 재귀라는것은 어떤 함수가 자신을 다시 호출하는 것을 말합니다. 만약 n에 5를 넣으면
factorial(5)가 수행됩니다. 그러면 n이 1보다 크기때문에 5*factorial(4)가 리턴됩니다.
우선 리턴이라는것은 함수 선언부에 보면 int factorial이라고 되있습니다.
리턴형이 int라는 것이죠. 제가 쓴구분에 main의 형태는 void라고 선언했습니다. void는 리턴값이 없는것이죠. 결국 리턴형이 int라는것은 그함수가 종료되면 결과값으로 int형의 자료가 반환되고 끝나는걸 의미합니다. 그러면 5*factorial(4)은 숫자라는 의미입니다. 저 부분이 다시 실행되면 5*4*factorial(3)을 부르고 2번더 수행하면 5*4*3*2*factorial(1)이 됩니다. factorial(1)이불리면 리턴 1이 되고 끝나므로 5*4*3*2*1이 리턴되고 종료됩니다.
정리하면 리턴은 그함수를 종료하면서 어떠한 값을 반환하라는 의미입니다. 제가 메인에 result=factorial(n)이라고 써놨는데 그럼 factorial(n)함수는 종료되면서 결과값 int형을 result변수에 반환하고 종료되는 겁니다.
책에 예제하나 없다면 책이 별로인거 같네요 C언어 처음배우시는 거면 A Book on C책을 추천해 드립니다.