我想解決一個數學問題的樂趣。我聲明一個「數字」,如果它是偶數,則它被分成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',所以循環再次運行。重複無限。 –
這應該很容易找到,如果你可以使用調試器跨過你的代碼。 –