生成Fibonacci序列并为其创建子集

时间:2017-05-16 00:24:47

标签: c# sequence fibonacci series integer-arithmetic

我正在尝试生成一个通过从数组[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]

1 个答案:

答案 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;

  }

它返回包含斐波纳契系列子集的列表。