如何制作适应向量大小的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 寻求帮助。
我目前正在制作一个程序,它将 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 寻求帮助。