arkingco   4년 전

피보나치 수열을 재귀함수로 만드는 과정을 보았습니다.

int a(int x){

  if ( x == 1 ) return 1;

  if (x == 2 )  return 1;

  return a(x-1) + a(x-2);

}

int main (){

cout << a(10) << endl;

}

이 알고리즘에서 

return a(x-1) + a(x-2) 의 실행 순서가 궁금합니다.

10 이라는 출력값을 넣으면 a(x-1) 에 들어가서 10 9 8 7 ... 2 1 된다음 

a(x-2) 에 들어간다음 다시 똑같이 8 7 6 5 ... 2 1 반복 되는 건가요?

순서가 궁금해서 int a 함수 안에 cout << x << endl; 을 넣어서 확인해 보았는데  a(5) 넣었다고할떄   결과값이

5

4

3

2

1

2

3

2

x값이 나와서 뭔가 제가 생각하는것과 다른것 같아서 질문 드립니다.


clrmt   4년 전

6572433b-7ade-49b2-b151-45b6729d9772

jung2381187   4년 전

C 또는 옛날 C++의 경우엔 덧셈 왼쪽과 오른쪽 사이에 실행 순서가 정해져 있지 않습니다(요즘 C++은 아마 정해져 있을 겁니다). 그래서 이런 경우엔 코드를 조심해서 작성해야 합니다.

arkingco   4년 전

답글감사합니다 !!

댓글을 작성하려면 로그인해야 합니다.