调用函数时出现故障

本文关键字:故障 函数 调用 | 更新日期: 2023-09-27 18:27:40

我无法调用函数,我尝试过Fibonacci(uint k []);Fibonacci(k);等,但不起作用

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace fibonaciv
{
    class Program
    {
        uint[] k;
        public static void Fibonacci(uint[] t)
         {
            uint n = 0;
            for (int i = 0; i <= 93; i++)
            {
                n++;
                 if (n <= 2)
               {
                    t[i] = 1;
                }
                else
                {
                    uint a = 1;
                    uint b = 1;
                    uint c = 0;
                    for (int j = 0; j < n - 2; j++)
                    {
                        c = a + b;
                        a = b;
                        b = c;
                    }
                    t[i] = c;
                }
            }
        }
        static void Main(string[] args)
        {
           // uint[] k;
            Fibonacci(k []);// how call the funcion
        }

    }
}

调用函数时出现故障

您需要将数组的实例传递给以下函数:

static void Main(string[] args) {
    // Create a new array, assign a reference to it to the k variable.
    uint[] k = new uint[94];
    // Call the function, passing in the array reference.
    Fibonacci(k);
}

这样做不需要类级别的uint[] k,但您确实需要确保数组变量实际包含对数组的引用,或者在尝试使用它时会出现运行时异常。(new uint[94]分配并返回对94个uint值的新数组的引用。)

我还建议更改这一行,以考虑可能传入的任何大小的数组

for (int i = 0; i <= 93; i++)
// Change to this:
for (int i = 0; i < t.Length; i++)

首先,要将数组变量作为参数传递给函数,只需使用变量的名称,而不使用数组项访问器[]。将Fibonacci(k []);更改为Fibonacci(k);

其次,k是一个实例成员,因此不能从静态上下文(即静态Main方法)访问它。一个快速的解决方法是将k声明为静态。将uint[] k;更改为static uint[] k;

编辑:现在它已经过了编译的阶段,仍然需要快速更改才能使其工作。

初始化您的k数组,使其可以保存您将在Fibonacci方法中设置的值。将uint[] k更改为uint[] k = new uint[94]