调用函数时出现故障
本文关键字:故障 函数 调用 | 更新日期: 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]
。