#include <stdio.h>
int f(int n)
{
if (n == 0)
return 1; <<<<<<< /////////// 이부분을 함수를 종료하는 키워드 return ; 으로 대체하면 전혀 다른값이 출력되는데요. 그 이유가 뭘까요?
else
return n*f(n - 1);
}
///////////////////////////////////////////////////////////////////////////////////
int main(void)
{
int input;
int result;
printf("수를 입력하세요:");
scanf("%d", &input);
if (input < 0)
{
printf("0이상의 수를 입력하세요:");
return ;
}
result = f(input);
printf("%d의 팩토리얼 값:%d ", input, result);
return 0;
}
return 은 님이 말한대로 반환없이 함수 종료고 return X는 X를 반환한다는건데
아아 아 이해했습니다 감사합니다!!
근데 실행은 됨?
return 1;은 어차피 1만 무한 반복되기때문에 컴퓨터에서 자동으로 호출을 중지하고 끝내는게맞나요?
넵 실행은되네요 ㅎㅎ 값이 음수로 나와요
return;을한다고 반환값이 없는게 아님
레지스터에 박혀있던 쓰레기값이 반환될텐데 이건 정확히 모르겠고 아무튼 int로 선언됐으면 멀하던 int를 반환함
오오 신기하네욬ㅋㅋㅋㅋㅋㅋㅋ
ㄴ 몰랏슴
return 1은 더이상 실행이고 자시고 1임 return 3 * f(2)이런건 f(2)가 어떤 정수인지 함수를 더 평가해서 알아낸다음 그걸 반환하는거고
호출된 f는 모두 0으로 가는데 0에선 f 호출 또 안하니까 호출을 중지한게 아니라 호출 자체를 안해서 재귀가 끝난다고 해야 맞을듯
아아아 완벽히 이해됐습니다 두 분 넘나 감사드려요 ㅎㅎ 즐건주말되세요