【发布时间】:2022-01-27 18:06:46
【问题描述】:
作为问题的一部分,我需要在字符串上创建一个递归函数。
其中一部分基于斐波那契的第 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)
【问题讨论】:
-
函数参数也需要类型。只需将您的函数参数定义为数组,例如)fn(int array[]),就可以了。哦,一定要传递大小,因为它实际上只是传递 int*。如果要循环遍历数组,则需要传递数组的大小。
-
是的,但是每次调用函数时将数组作为参数传递会不会很慢?
-
它实际上是在传递 int*,如果你的数组当然是整数
-
看起来您是从另一种语言进入 C++ 或试图从竞赛网站上发布的代码中学习 C++。这是一条艰难的旅行之路。不同的语言做不同的事情,竞争代码的目标是赢,而不是教。我强烈建议先从a few good books 学习基础知识。
-
你永远不需要包含比特/任何东西
标签: c++ arrays function memory scope