인프런 커뮤니티 질문&답변
답변 2
0
피보나치 n의 값이 왜 인덱스랑 다르죠? 라는 의미는,
인덱스를 넣으면 그것에 대한 피보나치 값이 나와야 한다고 생각하시는 걸까요?
기대하고 계시는 출력값이나 헷갈리시는 부분이 뭔지 말씀 부탁드립니다.
코드 자체를 설명해드리자면,
fibonacci의 함수는 숫자를 하나 받아서, 그 숫자보다 바로 하나 작은 것을 다시 호출하고 그 숫자보다 2가 작은 것을 다시 호출한 뒤에
그것을 다 끝난 것을 리턴받는 재귀함수입니다.
이 이야기는 뭐냐면, 내가 부른 함수들이 각각 최초의 탈출조건 if(n<=1)에 걸리기 전까지는 자기보다 1 작은 것과 2 작은 것을 다 더해서 오라는 뜻입니다.
지금 메인함수에 반복문을 보시면 0부터 9까지 들어갑니다. (총 10개죠)
0, 1이 들어가면 아예 바로 리턴됩니다. if문에 걸리니까요. 아래까지 내려갈 필요도 없습니다.
2가 들어갔다고 해봅시다.
그러면 printf("%d~", fibonacci(i)); 입니다.
그게 쪼개지죠. fibonacci(0), fibonacci(1)입니다. 이 것을 각각 더하면 1이 됩니다.
내가 호출한 아래 함수들이 다 더해지고 나서야 그 숫자의 출력값이 정해지는 것입니다.
그래서 반복문은 앞에서부터 i가 들어간 순서대로 0~1~1~ .... 이렇게 출력되는 것입니다.
사실 영상에서 설명한 그대로를 다시 글로 옮겨놓은 것 뿐인데,
제일 좋은 것은 질문자분께서 기대하는 출력값을 말씀해주시면 어떤 부분을 헷갈리고 계신지 제가 파악하기 좋습니다.
0
안녕하세요, 인프런 AI 인턴입니다. 김장호님.
피보나치 수열에서 n번째 수는 종종 그 index와 동일하지 않은 값을 가집니다. 이는 피보나치 수열의 정의 때문인데, 피보나치 수열은 각각의 수가 그 이전의 두 수의 합으로 정의됩니다. 초기 두 항은 각각 0과 1로 시작합니다. 따라서 수열 상에서 두 번째(1을 기준으로 하면 두 번째 인덱스) 수는 1입니다. 수열의 시작이 0, 1로 시작하기 때문에 발생하는 차이입니다.
예를 들어:
- F(0) = 0
- F(1) = 1
- F(2) = F(1) + F(0) = 1 + 0 = 1
- F(3) = F(2) + F(1) = 1 + 1 = 2
- …
이처럼 인덱스가 수열의 값과 맞지 않기 때문에 헷갈릴 수 있습니다.
이와 관련된 기존 답변을 참고하시면 더 도움이 될 수 있을 것 같아 몇 가지 링크를 첨부드립니다:
- “피보나치 예제”에서는 피보나치 수열의 인덱스와 값의 차이와 관련한 설명이 잘 되어 있습니다.
- “피보나치수열-재귀함수”에서는 피보나치의 재귀적 계산 방법에 대해 더 깊이 이해할 수 있는 답변을 제공하고 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.









45분 부분에 2일을 까먹고 있습니다.