不好意思,小弟程式新手,想請教問題:
如圖,請問圖片上的雙層迴圈是怎麼運作的呢?一開始我的想法是:
c = 1
2 % 2 = 0
i + i = 3
3 % 2 != 0
2 = 3 - 1
c + 1 = 2
j + i = 3
3 % 3 = 0
i + i = 4
4 % 3 != 0
3 = 4 - 1
c + 1 = 3
印出i = 4
可是實際印出來卻是5,而且確實是5,請問這樣的想法有甚麼問題呢?
int i, j, c = 1;
// i從 2 開始 只要i>0 就繼續跑內圈 每次+1 所以等於無窮無盡跑
for (i = 2; i > 0; i++) {
for (j = 2; j < i; j++) { }//j從 2 開始 只要 j<i 就繼續+1
}
i = 2, j = 2 //j不小於i 所以直接不跑j
i = 3; j = 2;
// j == i - 1 => 2 == 3 - 1 符合
// 所以 c+1 此時 c = 2
// j = 3 已經不小於i所以跳出
// c == n => 3不等於2所以繼續
i = 4, j = 2
// 4 % 2 == 0
// break;//跳出j迴圈
i = 5, j = 2
// j == i-1 => 2 != 5 - 1
// j = 3
// j == i-1 => 3 != 5 - 1
// j = 4
// j == i-1 => 4 == 5 - 1
// c +=1
// c == n ==3
// 此時i = 5