강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

김장호님의 프로필 이미지
김장호

작성한 질문수

(2025) 일주일만에 합격하는 정보처리기사 실기

함수와 재귀함수 (v2)

피보나치

해결된 질문

작성

·

27

0

피보나치(n) 의 값이 인덱스랑 왜다르죠? 헷갈립니다....

답변 2

0

주말코딩님의 프로필 이미지
주말코딩
지식공유자

안녕하세요, 질문을 주실 때는 영상에서 몇 분 몇 초 대인지 말씀을 함께해주셔야 답변이 가능합니다.

확인 후 대댓글로 부탁드립니다..^^;

김장호님의 프로필 이미지
김장호
질문자

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

주말코딩님의 프로필 이미지
주말코딩
지식공유자

피보나치 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~ .... 이렇게 출력되는 것입니다.

 


 

사실 영상에서 설명한 그대로를 다시 글로 옮겨놓은 것 뿐인데,

제일 좋은 것은 질문자분께서 기대하는 출력값을 말씀해주시면 어떤 부분을 헷갈리고 계신지 제가 파악하기 좋습니다.

 

주말코딩님의 프로필 이미지
주말코딩
지식공유자

image.png

 

image.png

 

도움이 되실까하여 LLM으로 생성한 도표 첨부해드립니다.

김장호님의 프로필 이미지
김장호
질문자

1761578041861.png.webp

겨우 이해해서 풀었습니다. 자꾸 0,1,1,3,5,7,9이런 식으로 나와서 왜 다르지 했는데 제가 피보나치 값을 바꾸지 않았네요

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
- …

이처럼 인덱스가 수열의 값과 맞지 않기 때문에 헷갈릴 수 있습니다.

이와 관련된 기존 답변을 참고하시면 더 도움이 될 수 있을 것 같아 몇 가지 링크를 첨부드립니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

김장호님의 프로필 이미지
김장호

작성한 질문수

질문하기