麻烦调用功能

时间:2014-10-22 20:32:52

标签: c#

我无法调用函数我已尝试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
        }


    }
}

2 个答案:

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