如何制作适应向量大小的for循环?

how to make a for loop that adapts to vector size?

我目前正在制作一个程序,它将 return 给定起始值 x 的 3x+1 的值。

这是修剪后的代码。

    //3x+1
    //starting at any positive integer (x)
    //multiply by 3 then add one
    //(n%2==0?/2:3n+1)

    std::vector<int> Holder;
    int usrNum;
    std::cin >> usrNum;
    
    Holder.push_back(usrNum);
    Holder.push_back(3*usrNum+1);

    for(int i = 1; i < 200; i++){
        (Holder[i]%2==0?Holder.push_back(Holder[i]/2):Holder.push_back(3*Holder[i]+1));
    }
    
    for (int i = 0; i < Holder.size(); i++) {
        std::cout << Holder[i] << " ";
    }

目前我使用 200 作为硬编码值,因为如果我使用 i < Holder.size() 它会导致无限循环,我永远无法跟上。

有人知道我如何让它循环直到达到值 1 吗?

使用 while 循环,当最后一个元素为 1 时终止条件。查看 this reference for std::vector 寻求帮助。