我正在尝试生成一个通过从数组[0,1]开始计算的Fibonacci序列,并且通过在它之前添加两个数字来计算每个后续数字。 //例如0,1,[0 + 1 =] 1,[1 + 1 =] 2,[1 + 2 =] 3,[2 + 3 =] 5,等等。
我试图实现的两种方法如下,但我很难停留在生成子集(GenerateSubset(params))。任何帮助都会非常明显。
public IEnumerable<long> Generate()
{
int i, count, f1 = 0, f2 = 1, f3 = 0;
Console.Write("Enter the Limit : ");
count = int.Parse(Console.ReadLine());
Console.WriteLine(f1);
Console.WriteLine(f2);
for (i = 0; i <= count; i++)
{
f3 = f1 + f2;
Console.WriteLine(f3);
f1 = f2;
f2 = f3;
}
Console.ReadLine();
}
public Task<IEnumerable<long>> GenerateSubset(int fromIndex, int toIndex)
{
throw new NotImplementedException();
}
下面是包含我试图通过实现这些方法传递的测试用例的文件。
Test cases file:
[drive.google.com/open?id=0B_6Eur5JYu9_MDNfelVKOWswRGs]
答案 0 :(得分:0)
我认为你想要一个逻辑来生成Fibonacci系列的子集。这是我在java中编写的逻辑。你可以把它转换成c#。
int fibonacci(int x) {
if (x == 0)
return 0;
if (x == 1)
return 1;
return fibonacci(x-1)+fibonacci(x-2);
}
和生成子集的第二个函数是:
List<Integer> GenerateSubset(int fromIndex, int toIndex) {
int first=fibonacci(fromIndex);
int second= fibonacci(fromIndex+1);
int third;
List<Integer> result= new ArrayList<Integer>();
result.add(first);
result.add(second);
for(int i= fromIndex+2;i<=toIndex-1;i++) {
third= first+second;
result.add(third);
first=second;
second=third;
}
return result;
}
它返回包含斐波纳契系列子集的列表。