我无法调用函数我已尝试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
}
}
}
答案 0 :(得分:2)
您需要将一个数组实例传递给此函数:
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++)
答案 1 :(得分:2)
首先,要将一个数组作为参数传递给函数,只需使用变量的名称,而不使用数组项访问器[]
。将Fibonacci(k []);
更改为Fibonacci(k);
。
其次,k是实例成员,因此您无法从静态上下文(即静态Main方法)访问它。快速解决方法是将k声明为静态。将uint[] k;
更改为static uint[] k;
。
编辑:现在它已经超过了编译点,它仍然需要快速更改才能使其正常工作。
初始化k
数组,使其可以保存您在Fibonacci方法中设置的值。将uint[] k
更改为uint[] k = new uint[94]
。