我想解决一个数学问题的乐趣。我声明一个“数字”,如果它是偶数,则它被分成2,如果它是奇数,则它乘以3和+1。但是,我想要使用迭代,但出于某种原因,我的程序无法使用它。这里有两个代码,一个声明数字为13,另一个使用迭代语句。迭代循环无限循环数学目的
#include <iostream>
using namespace std;
int main(){
int sum = 0;
int number = 13;
cout << "\nFOR THIS NUMBER : " << number;
while (number > 1){
if (number % 2 != 0){
number = 3 * number + 1;
cout << "\n" << number;
sum = sum + 1;
}
if (number % 2 == 0){
number = number/2;
cout << "\n" << number;
sum = sum + 1;
}
}
cout << "\n\nThe sum is : " << sum << "\n";
return 0;
}
如预期那样输出40,20,10,5,16,8,4,2,1。
下面是其他代码:
#include <iostream>
using namespace std;
int main(){
int sum = 0;
for (int number = 13; number < 14; number = number + 1){
cout << "\nFOR THIS NUMBER : " << number;
while (number > 1){
if (number % 2 != 0){
number = 3 * number + 1;
cout << "\n" << number;
sum = sum + 1;
}
if (number % 2 == 0){
number = number/2;
cout << "\n" << number;
sum = sum + 1;
}
}
cout << "\n\nThe sum is : " << sum << "\n";
}
return 0;
}
这应该输出完全一样的答案,但是当我运行它,它变成一个无限循环。有人可以帮忙吗?
当'while'循环结束,'number'是'0'。for循环然后执行step语句,通过'1'递增'number'。然后运行条件表达式,由于'1'明显小于'14',所以循环再次运行。重复无限。 –
这应该很容易找到,如果你可以使用调试器跨过你的代码。 –