首页 > 解决方案 > 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 循环结束

标签: c++fibonacci

解决方案


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;
}

推荐阅读