2013-11-25 5 views
1

빠른 질문입니다. 피보나치 값을 반환하는 코드가 포함되어 있지만 잘못된 값입니다. 예를 들어 2입니다. 사용자는 10을 입력하고 34 대신 89가 반환됩니다. 기본적으로 사용자가 입력 한 값의 피보나치 값을 반환하고 싶습니까?피보나치 계산기가 잘못된 값을 반환했습니다.

누구든지 문제를 발견 할 수 있습니까? 감사합니다

var Newmodel = new FibonacciModel(); 

int a = 0; 
int b = 1; 
for (int i = 0; i < model.InputFromUser; i++) 
{ 
    model.FibonacciValue = a + b; 
    a = b; 
    b = model.FibonacciValue; 
} 

Newmodel.InputFromUser = model.InputFromUser; 
Newmodel.FibonacciValue = model.FibonacciValue; 

return View(Newmodel); 
+1

왜 'Newmodel.FibonacciValue'를 두 번 할당합니까? – haim770

+0

사과, 나는 그것을 편집 할 것이다 .. – mkell

+0

참조 http://stackoverflow.com/questions/9122277/what-is-a-non-recursive-solution-for-fibonacci-like-sequence-in-java –

답변

6

제 1 및 제 2 피보나치 값을 계산하면 안

private int CalculateFibonacciValue(int index) 
{ 
    if (index < 0) 
     throw new ArgumentException(); 

    int a = 0; 
    int b = 1; 
    int value = 0; 

    if (index == 0) 
     return a; 

    if (index == 1) 
     return b; 

    for(int i = 2; i <= index; i++) 
    { 
     value = a + b; 
     a = b; 
     b = value;   
    } 

    return value; 
} 

:

int a = 0; 
int b = 1; 

switch(model.InputFromUser) 
{ 
    case 0: model.FibonacciValue = a; break; 
    case 1: model.FibonacciValue = b; break; 
    default: 
     for (int i = 2; i < model.InputFromUser; i++) 
     { 
      model.FibonacciValue = a + b; 
      a = b; 
      b = model.FibonacciValue; 
     } 
     break; 

} 또한

내가 별도의 방법으로 피보나치 값 계산을 이동할 수 제안 그러면 코드가 더 깨끗해집니다.

model.FibonacciValue = CalculateFibonacciValue(model.InputFromUser); 
+1

일관된 코드 들여 쓰기가 가능합니다. (내 +1 준비가되었습니다) – Wolf

+1

감사합니다. lazyderezovsky – mkell

+1

괜 찮 아 요 :)하지만 ... 던지기가 조금 남았습니다.) – Wolf

관련 문제