【发布时间】:2016-05-15 12:37:49
【问题描述】:
我在此链接上找到了类似的解决方案 Java: check if arraylist is part of fibonacci sequence,但我希望在 c# 中使用它。我托盘在 c# 中转换它,但它不起作用。谁能帮助我,告诉我哪里错了。
static void Main(string[] args)
{
List<int> list = new List<int> { 0, 1, 1, 2, 3, 5, 8, 13, 21 };
Console.WriteLine(isFibonacci(list));
Console.ReadLine();
}
public static bool isFibonacci(List<int> arr)
{
if (arr.Count() < 3)
{
return false;
}
int fib1 = 0;
int fib2 = 1;
while (fib1 < arr.IndexOf(0))
{
int tmp = fib1 + fib2;
fib1 = fib2;
fib2 = tmp;
}
if (fib1 != arr.IndexOf(0))
{
return false;
}
if (fib2 != arr.IndexOf(1))
{
return false;
}
for (int i = 2; i < arr.Count(); i++)
{
if (arr.IndexOf(i) < 0)
return false;
// I think that problem is in this part of code
if (arr.IndexOf(i) != (arr.IndexOf(i - 1) + arr.IndexOf(i - 2)))
return false;
}
return true;
}
【问题讨论】:
-
代码乍一看似乎是正确的。 “不起作用”到底是什么意思?
-
你能说出你的代码返回 false 的值吗?
-
我在代码中我认为有错误的地方添加了注释。