使用递归输出数组

poi*_*sya 1 c# arrays recursion

我正在尝试使用递归写入数组的内容。我的代码如下所示:

static void Foo(int[] myArray)
{
    int i = 0;
    Console.WriteLine(myArray[i]);

    if (i < myArray.Length)
        return;

    i++;

    Foo(myArray);
}
static void Main(string[] args)
{
    int[] myArray = {4,6,78,9,0};

    Foo(myArray);
}
Run Code Online (Sandbox Code Playgroud)

但是,当我执行应用程序时,而不是预期的输出:

4
6
78
9
0
Run Code Online (Sandbox Code Playgroud)

它只打印第一个元素:

4
Run Code Online (Sandbox Code Playgroud)

我希望收到能帮助我找到正确解决方案的建议

小智 5

i变量不维护不同函数调用之间的状态。

相反,您需要将其i作为参数传递给函数并通过递归调用来更新它。

static void Foo(int[] arr, int i) {
    if (i >= arr.Length) return;

    Console.WriteLine(arr[i]);
    Foo(arr, i + 1);
}
Run Code Online (Sandbox Code Playgroud)

然后致电Main

Foo(myArray, 0);
Run Code Online (Sandbox Code Playgroud)