c++ - VS Code 在重新运行代码时产生不同的输出
问题描述
我正在尝试一个简单的斐波那契数列程序,在 VS 代码上使用记忆,但是在重新运行时,输出在全 0 和实际输出之间切换。这是代码
int fib(int n, int *arr)
{
if(n <= 1)
{
arr[n] = 1;
return 1;
}
if(arr[n]>0)
return arr[n];
int a = fib(n-1, arr) + fib(n-2, arr);
arr[n] = a;
return a;
}
int fibo_1(int n)
{
int *arr = new int[n];
for(int i=0; i<n; i++)
arr[i] = 0;
fib(n, arr);
for(int i=0; i<n; i++)
cout << arr[i] << " ";
delete [] arr;
}
int main()
{
int n=10;
fibo_1(n);
}
没有模式,它只是随机切换到 0 和实际输出。不同的输出:
[Running] cd "c:\Users\naman\Google Drive\Coding\CodeBlocks\Code Blocks\" && g++ fibonacci.cpp -o fibonacci && "c:\Users\naman\Google Drive\Coding\CodeBlocks\Code Blocks\"fibonacci
0 0 0 0 0 0 0 0 0 0
[Done] exited with code=0 in 0.996 seconds
[Running] cd "c:\Users\naman\Google Drive\Coding\CodeBlocks\Code Blocks\" && g++ fibonacci.cpp -o fibonacci && "c:\Users\naman\Google Drive\Coding\CodeBlocks\Code Blocks\"fibonacci
1 1 2 3 5 8 13 21 34 55
[Done] exited with code=0 in 1 seconds
[Running] cd "c:\Users\naman\Google Drive\Coding\CodeBlocks\Code Blocks\" && g++ fibonacci.cpp -o fibonacci && "c:\Users\naman\Google Drive\Coding\CodeBlocks\Code Blocks\"fibonacci
1 1 2 3 5 8 13 21 34 55
[Done] exited with code=0 in 1.287 seconds
[Running] cd "c:\Users\naman\Google Drive\Coding\CodeBlocks\Code Blocks\" && g++ fibonacci.cpp -o fibonacci && "c:\Users\naman\Google Drive\Coding\CodeBlocks\Code Blocks\"fibonacci
0 0 0 0 0 0 0 0 0 0
[Done] exited with code=0 in 0.834 seconds
[Running] cd "c:\Users\naman\Google Drive\Coding\CodeBlocks\Code Blocks\" && g++ fibonacci.cpp -o fibonacci && "c:\Users\naman\Google Drive\Coding\CodeBlocks\Code Blocks\"fibonacci
1 1 2 3 5 8 13 21 34 55
[Done] exited with code=0 in 0.862 seconds
[Running] cd "c:\Users\naman\Google Drive\Coding\CodeBlocks\Code Blocks\" && g++ fibonacci.cpp -o fibonacci && "c:\Users\naman\Google Drive\Coding\CodeBlocks\Code Blocks\"fibonacci
0 0 0 0 0 0 0 0 0 0
[Done] exited with code=0 in 0.791 seconds
[Running] cd "c:\Users\naman\Google Drive\Coding\CodeBlocks\Code Blocks\" && g++ fibonacci.cpp -o fibonacci && "c:\Users\naman\Google Drive\Coding\CodeBlocks\Code Blocks\"fibonacci
0 0 0 0 0 0 0 0 0 0
[Done] exited with code=0 in 0.797 seconds
[Running] cd "c:\Users\naman\Google Drive\Coding\CodeBlocks\Code Blocks\" && g++ fibonacci.cpp -o fibonacci && "c:\Users\naman\Google Drive\Coding\CodeBlocks\Code Blocks\"fibonacci
1 1 2 3 5 8 13 21 34 55
[Done] exited with code=0 in 0.8 seconds
但是当我不使用递归,而是使用 dp 方法时,一切正常。
void fibo(int n)
{
int *a = new int[n];
a[0] = 1;
a[1] = 1;
cout << a[0] << " " << a[1] << " ";
for(int i=2; i<n; i++)
{
a[i] = a[i-1] + a[i-2];
cout << a[i] << " ";
}
delete [] a;
}
怎么了?
解决方案
推荐阅读
- java - 定义一个同时具有强制参数和可选参数的选项
- bash - 如何使用 bash 脚本解压目录中的每种类型的 tar 文件?
- javascript - 如何使用 Javascript 使 css 偏移更平滑?
- neo4j - 创建具有相同关系的重复节点
- typescript - 为 VSCode 扩展创建日志文件
- python - 当我为所有值获取“nan”时如何使用 & 或和操作来获取正确的数据
- python - 将用户重定向到子
- php - 在我的路线中添加参数时显示视图的问题 - Laravel
- javascript - Typescript 对象的构造函数中 Object.assign() 的目的是什么?
- sql - 无法使用 .each 块和 sqlite3 计算排除当前观察的平均值