피보나치 수열을 재귀함수로 만드는 과정을 보았습니다.
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
x값이 나와서 뭔가 제가 생각하는것과 다른것 같아서 질문 드립니다.
C 또는 옛날 C++의 경우엔 덧셈 왼쪽과 오른쪽 사이에 실행 순서가 정해져 있지 않습니다(요즘 C++은 아마 정해져 있을 겁니다). 그래서 이런 경우엔 코드를 조심해서 작성해야 합니다.
답글감사합니다 !!
댓글을 작성하려면 로그인해야 합니다.
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값이 나와서 뭔가 제가 생각하는것과 다른것 같아서 질문 드립니다.