mke*_*ell 1 c# fibonacci asp.net-mvc-4
快速问题,包含的代码返回一个Fibonacci值,但它是错误的值,它关闭2,例如用户输入10,返回89,而不是34.基本上我只想返回由输入的值的Fibonacci值用户 ?
谁能发现问题?谢谢
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);
Run Code Online (Sandbox Code Playgroud)
不应计算第一和第二斐波那契值:
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;
Run Code Online (Sandbox Code Playgroud)
}
另外我建议你将Fibonacci值计算移到单独的方法:
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;
}
Run Code Online (Sandbox Code Playgroud)
这将使代码更干净:
model.FibonacciValue = CalculateFibonacciValue(model.InputFromUser);
Run Code Online (Sandbox Code Playgroud)