while 循环在满足条件时不会终止 (c++)
While loop does not terminate when condition is met (c++)
这对在线法官来说是一个问题。它需要两个输入,i和j,其中必须在两个输入之间找到最大的3n+1周期长度。
当 x 变为 1 时,程序应终止。但是当它为 1 时,代码不会终止,而是继续循环 1。提前感谢任何帮助。
#include <iostream>
using namespace std;
int main(){
int i, j, temp_i, temp_j, counter, max;
max = 0;
cin >> i >> j;
temp_i = i;
temp_j = j;
for(int x = i; x < j; x++){
counter = 1;
while(x != 1){
if(x % 2 == 0){
x = x/2;
// cout << x << endl;
}
else{
x = 3*x + 1;
}
counter++;
}
if(counter > max){
max = counter;
}
}
cout << temp_i << " " << temp_j << " " << max << endl;
return 0;
}
您的循环存在逻辑错误。想一想:当x == 1
和内部循环结束时,x
增加到2
,内部循环再次运行,直到x
增加到2
并且内部循环再次运行时x == 1
......等等等等。
您需要使用第二个变量进行外部循环计数。类似的东西
for (int y = i; y < j; ++y)
{
int x = y;
while (x != 1)
{
...
}
}
相关文章:
- OpenGL - 在抛出"__gnu_cxx::recursive_init_error"实例后终止调用?
- 多个文件的内存分配错误"在抛出 'std :: bad_alloc' what (): std :: bad_alloc 的实例后终止调用" [C++]
- 我收到以下错误:抛出'std::bad_alloc'实例后终止调用
- 为什么这个 c++ 代码打印出长度 5,当我打印出字符串时,程序会自动终止?
- 当我在其中一个线程执行中(在activemq-cpp中)捕获到特定值时,我如何终止/停止所有其他线程
- llvm构建器向基本块添加终止符
- 如何使用隔离>终止执行来停止所有线程
- 用于将C++代码转换为 Web 程序集的脚本未终止
- C++应用程序 MySQL odbc 数据库连接错误:在引发"otl_tmpl_exception<>"实例后终止调用
- 终止 QProcess 不会终止子进程
- 运行代码时,c++ 会终止进程
- 检测到堆栈粉碎:已终止 中止(核心已转储)
- 在输入句子时终止 std::out_of_range
- 二进制搜索的终止点
- MPI:检查是否有任何进程已终止
- 英特尔 TBB 程序不会终止,可能会误用参考计数器
- 如何改进我的代码,使其不会因超时而终止?(黑客排名挑战)
- while 循环不以哨兵值终止
- C++ 程序不会因为内存而终止
- 在这个无限循环中,当输入 0 时终止,当输入 int 范围之外的任何内容时,程序行为不正常