这个函数为什么运行不了
时间: 2024-02-27 11:53:01 浏览: 51
这个函数无法通过编译,因为在 C++ 中,声明数组时必须指定数组的大小,不能使用变量来作为数组的大小。在这个函数中,数组 dp 的大小是 n + 1,其中 n 是传入函数的参数,而 n 的值是在运行时才确定的,所以无法在编译期确定数组的大小。
解决方法是,使用动态内存分配来创建数组。可以使用以下代码来替代原来的声明数组的方式:
int* dp = new int[n+1];
这样就可以在运行时动态分配数组的大小了。另外,在使用完数组后,也需要记得释放内存,可以使用以下代码来释放数组 dp 所占用的内存:
delete[] dp;
完整的代码如下:
```
#include<iostream>
using namespace std;
int f( int n ){
if(n <= 1)
return n;
int* dp = new int[n+1];
dp[0] = 0;
dp[1] = 1;
for(int i = 2; i <= n; i++){
dp[i] = dp[i-1] + dp[i-2];
}
int result = dp[n];
delete[] dp;
return result;
}
int main() {
cout << f(3) << endl;
system("pause");
return 0;
}
```
阅读全文