gpt4 book ai didi

c++ - 当条件满足时,While 循环不会终止 (c++)

转载 作者:行者123 更新时间:2023-11-30 05:42:00 25 4
gpt4 key购买 nike

这是一个在线判断的问题。它需要两个输入,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 == 1x 增加到 2 并且内部循环再次运行......等等等等。

您需要为外循环计数使用第二个变量。有点像

for (int y = i; y < j; ++y)
{
int x = y;
while (x != 1)
{
...
}
}

关于c++ - 当条件满足时,While 循环不会终止 (c++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30882435/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com