大佬帮忙看一下哪里错了😭
我仿写了一下是能跑的
#include <bits/stdc++.h>
using namespace std;
int main()
{
vector<int> a;
int k = 9;
while (k > 1)
{
if (!(k % 2))
{
k /= 2;
a.push_back(k);
}
else
{
k = (k * 3) + 1;
a.push_back(k);
}
}
for (int i = 0; i < a.size(); i++)
{
cout << a[i] << ' ';
}
}
哦我大概明白了,因为你两个都是if,不存在互斥关系
所以如果k在while开始时为2的话,会折半变为1,并push一个1进去,然后进入下一个if判断,此时k为1,同样会进入下一个if,并在下一个if中变回4
所以你的程序一直在421中横跳,但是因为第二个if的存在,k在while末尾值永远不会为1,所以形成死循环,最终空间不足.
你把两个if改为互斥版本(见我上方给出的代码)即可
有帮助望采纳