【问题标题】:How to return an array fibonaci numbers in C #?如何在 C# 中返回数组斐波那契数?
【发布时间】:2021-05-21 06:09:46
【问题描述】:

我想创建一个函数,将整数数组作为输入,并将 int 数组打印为斐波那契数列,例如:第三个元素 = 第二个元素 + 第一个元素。

到目前为止,这是我的代码:

static void  Result(int[] arr)
{    
    for (int i = 0; i < arr.Length; i++)
    {
        if (arr[i] < 0)
            Console.WriteLine("arr[i]", arr[i], "  number to get must be greater or equal than 0");

        var n = arr[i] + 1; 
        var a = new int[n];
        arr[0] = 0;

        if (arr[i] == 0)
        {
            a[1] = 1;
        }
        for ( i = 2; i < n; i++)
        {
            a[i] = a[i - 2] + a[i - 1];
        }                
    }
}

public static void Main()
{
    int[] arr = {7, 8, 3, 9, 11,16,14,91, }; 
    Result(arr);
}

【问题讨论】:

  • 请说明您遇到的问题到底是什么
  • 这能回答你的问题吗? How I do fibonaci sequence under 1000?
  • 输入数组的目的是什么?斐波那契从 1 和 1 开始。
  • 如果您使用以下结构,这对我们很有帮助:1)这是我期望的输出,2)这是我得到的输出。问题:它们在以下方面不匹配:......沿着这些线。可以发一下吗
  • 您可能想给出一个示例输入和预期的输出。

标签: c#


【解决方案1】:

如果输入是:1 ,3 ,4 ,6, 7 ,8 10, 11, 15 ,25 输出应该是:1, 3, 4, 7, 11 所以 1+3=4, 4+3=7等等。

我看了你的代码,你很接近。

最大的问题是您从i = 0 开始,如果您尝试访问arr[-1] 和arr[-2] 会导致错误。

我们可以从i = 2开始解决这个问题。

例如:

static int[] Result(int[] arr)
{    
    int[] result = arr;

    for (int i = 2; i < arr.Length; i++)
    {
        result[i] = result[i-1] + result[i-2];
    }

    return result;
}

int[] arr = { 1 ,3 ,4 ,6, 7 ,8, 10, 11, 15 ,25 };

arr = Result(arr);

Console.WriteLine(string.Join(", ",arr));
// outputs: 1, 3, 4, 7, 11, 18, 29, 47, 76, 123

另一个注意事项是,除非您将 int[] arr 作为参考传递,否则您将需要返回一个新的 int[] 作为结果,因为 Result() 对 arr 的更改不会反映在数组上.

【讨论】:

    猜你喜欢
    • 2019-04-06
    • 2011-08-10
    • 2010-11-07
    • 1970-01-01
    • 1970-01-01
    • 2013-03-29
    • 2016-08-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多