Я пытаюсь решить математическую задачу для удовольствия. Я объявляю «число», и если он четный, он делится на 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 выполняет оператор шага, увеличивая число на '1'. Затем он запускает выражение условия, и поскольку '1', очевидно, меньше, чем' 14', цикл запускается снова. Повторите для бесконечности. –
Это должно было быть легко найдено, если бы вы перешли через свой код с помощью отладчика. –