c++ 순환함수 질문드립니다 ㅠㅠ
마루한
#include iostream.h
long fact(int n);
void main(void)
{
int n;
long result;
cout 정수를 입력하세요: ;
cin n;
result = fact(n);
cout n ! = result;
}
long fact(int n)
{
if(n=1)
return 1;
else
return (n*fact(n-1));
}
--------------------------------------------------------------------
공부를 하던중에 순환함수라는 파트가 있는데 그 예제중 일부분입니다.
저 소스는 팩토리얼을 순환함수로 구하는 소스인데요.
개념이 머릿속에서 도식화가 되지않아 완전히 내것으로 만드는데엔 실패했습니다.
이해하기 쉽도록 설명좀 부탁드리겠습니다.
-
겨울바람 2024-06-02
중요도는 잘 모르겠습니다아~ 다만 부담 가지지 말고~ 편하게 공부하셨스면 좋겠어요 ~
-
먹딸기 2024-06-02
아~~그렇게 중요도가 있는건 아닌가요?
-
새우깡 2024-06-02
^^;힘내세요.순환함수는 리턴에 대해서 완전이 이해못한 상태에서 보면 어려운데요~ 리턴 문장을 완전 이해하면~ 편리 하기만 하지~ 속도면 메모리 관리 면에선~ 꽝이에요~;(안쓰는게 좋다는.^^;;)
-
꿈빛 2024-06-02
아 그럼 return(3*fact(3-1));에서 순환이 될때마다 fact(3-1) 이부분으로 리턴이 계속 되서 1이 될때까지
이어지다가 그다음엔 거꾸로 return 하면서 1*2*3의 순으로 곱하게 되는것이군요!
제가 이해한게 맞는지 댓글달아주시면 고맙겠습니다 ^^ -
아담 2024-06-02
return (n*fact(n-1)); 에서 순환될 동안에 n값이 어떻게 안변하는것입니까?
처음3이 들어간경우
return(3*fact(3-1));
그다음 한번더 돌경우
return(2*fact(2-1));
이렇게 되는거 아닌가요? -
코이 2024-06-02
순환함수에 처음 3이 들어 간 경우
1.return(3*fact(3-1);
2.return(3*return(2*(fact(2-1);
3.return( 3*return(2*return(1);
결국 return(3*2*1);