在递归函数中使用来自 main 的数组

Using an array from main in a recursive function

作为一道题的一部分,我需要在一个字符串上创建一个递归函数。
其中一部分是基于斐波那契的第n个元素。
问题是我需要得到 n(元素的数量)作为输入,然后我才能创建数组。
但我还需要创建一个必须使用数组的递归函数。
我想将数组作为参数添加到函数中,但我不确定这是否会降低函数的效率。
所以以防万一:有什么方法可以在 C++ 的函数中使用该特定数组? 我这样计算数组:

#include <bits/stdc++.h>
using namespace std;



char IOI(int n,int k) {
    if (n<3) {
        return n;
    }
    if (k<=fibo[n-2]) {
        return IOI(n-2,k);
    }
    else {
        return IOI(n-1,k-fibo[n-2]);
    }

}

int main() {
    int n,k;
    cin >> n >> k;

    int fibo[n+1];
    fibo[0] = 0;
    fibo[1] = 1;
    for (int i = 2; i<n; i++) {
        fibo[i] = fibo[i-1]+fibo[i-2];
    }

    cout << IOI(n,k)


Is there any way I can use that specific array in a function in c++?

是的。使用某种间接形式将数组作为参数传递。通常,这将使用 span.

类型的参数来完成
cin >> n >> k;
int fibo[n+1];

这是不允许的。数组变量的大小在 C++ 中必须是编译时常量。

为了使用动态大小的数组,必须动态分配数组。最方便的解决方案是使用 std::vector.