c++ - for 循环在不满足我设置的条件的情况下完成
问题描述
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int n = 5;
int nums[] = {0 ,1};
if (n == 0)
{
return 0;
} else if (n == 1)
{
return 1;
} else{
for (int i = 2; i < n + 1; i++)
{
cout << i << endl;
nums[i] = nums[i-2] + nums[i-1];
}
return nums[n]
}
return 0;
}
它只是一个简单的斐波那契数组,但我的代码只给出了 stdout 一次,它是两次。仅供参考:此代码可能不正确计算斐波那契数组的第 n 项,但我正在努力解决这个 for 循环。
我认为 i < n+1 的条件不满足,但为什么这个 for 循环结束
解决方案
nums[i]
大小为2。您无法访问nums[i]
. i >= 2
数组不会增长。您无法更改数组的大小。使用std::vector
. 您已经包含了标题。return 语句完成一个函数。在 main 函数的情况下,它会导致程序停止。按照惯例,主函数的返回值描述了程序是成功还是发生了错误。你回来了
return nums[n];
这可能不是你的意图。我假设您要打印矢量。
#include <iostream>
#include <vector>
using namespace std;
int main()
{
int n = 5;
std::vector<int> nums {0 ,1};
if (n == 0)
{
return 0;
} else if (n == 1) {
return 1;
} else {
nums.reserve(n + 1);
for (int i = 2; i < n + 1; i++)
{
cout << i << '\n';
nums.emplace_back(nums[i-2] + nums[i-1]);
}
for (const auto num : nums)
{
cout << num << '\n';
}
}
return 0;
}
推荐阅读
- excel - 为什么 VBA .Formula 属性会给出运行时错误 1004
- html - HTML/CSS 移动兼容性
- html - 左对齐 html 下拉菜单(在标题下)
- c# - 使用结构数组和大小参数索引编组 C# 结构
- django - gunicorn.socket:失败,结果为“service-start-limit-hit”
- android - 重叠两个列表视图时 setOnItemClickListener 不起作用
- vba - 使用 VBA 移动括号以在 Microsoft Word 中的本地范围内进行注释
- java - Java - 由于其他 readline 方法,我如何在不跳过一行的情况下执行读取方法
- pointers - 无法更新方法内指针的值
- python - Python:删除范围内不匹配的所有csv文件行