피보나치 수열 구현중 질문입니다.
당나귀
Input첫줄에는 test case의 개수 T(T는 10만 이하)가 주어지며 그 다음줄 부터는 N(N은 최대 10억) 이 주어진다. Output각 줄에대해서 N번째 피보나치수를 구하여라.단 숫자가 커질 수 있으므로 1000으로 나눈 나머지를 출력하여라.
Sample Input1
5 Sample Output5
이 문제를 풀고 있어서 제가 코드를 아래와 같이 짜보았습니다.
#include stdio.h
int FiboNacci(int N);
int main(void)
{
long long int N;
long long int TestCase;
int i,Sum=0;
scanf(%lld,&TestCase);
fflush(stdin);
do{
scanf(%lld,&N);
fflush(stdin);
for(i=0; iN; i++)
Sum+=FiboNacci(i);
}while(TestCase -- 0);
printf(%d\n,Sum);
return 0;
}
int FiboNacci(int N)
{
int i;
if(N 0){
if(N 2)
return 1;
else
for(i=2; iN; i++)
return i;}
else
return -1;
}
컴파일을 해보니 피보나치 함수에서 모든 경로에서 값을 반환하지 않는다고 뜨는데요..
그리고 결과 값도 이상하게 나와서.. 논리적으로 어디가 잘못됬는지 잘 모르겠네요.
고수님들의 답변 부탁드립니다.
-
연와인
물론 모든 경로에서 값을 반환하지 않는군요.
if (N 2) 의
else 부분에서
컴파일러가 for을 안 들어갈 경우는 생각하는 것 같습니다.
논리적으로도 오류가 있지만 (N = 2 일 때)
논리가 맞을 때도 모든 경로에서 값을 반환하지 않는다고 뜨네요.
게다가 피보나치 함수 잘못되었습니다...