[英]Print triangular number patterns with loops and modulus calculation
我需要打印這樣的數字模式:
1
12
123
1234
2
23
234
2341
3
34
341
3412
4
41
412
4123
我的代碼:
for($i=1; $i<=4; ++$i) {
for($j=1; $j<=$i; ++$j) {
echo $j;
}
echo ("<br/>");
}
for($i=2; $i<=4; ++$i) {
for($j=2; $j<=$i; ++$j) {
echo $j;
}
echo ("<br/>");
}
我不知道達到最大數量后如何回收到第一個數字。 因為我的最大數字是 4,所以應該使用 1 而不是 5(2 代表 6,3 代表 7)。
您從 1 循環到 4,如果值大於 4,則減去 4。
這是針對2、23、234、2341 的:
for ($i = 1; $i <= 4; $i++) {
for ($j = 1; $j <= $i; $j++) {
$value = $j + 1; // or +2, or +3
echo $value > 4 ? $value - 4 : $value;
}
echo "\n";
}
這將在一個大循環中生成所有輸出:
$max = 4;
for ($start = 0; $start < $max; $start++) {
for ($i = 1; $i <= $max; $i++) {
for ($j = 1; $j <= $i; $j++) {
$value = $j + $start;
echo $value > $max ? $value - $max : $value;
}
echo "\n";
}
}
每當您需要循環數組訪問時,最好實現模數計算。 要進行設置,請使用 0 和 3 之間的范圍,而不是使用 1 和 4。模數計算可以返回 0 結果,因此必須准備好公式來處理該值。 要調整該值,只需在模數計算后加 1 即可生成 1 到 4 之間的數字。
根據需要累積數字字符串,並在每次外循環開始時重置字符串。
下面證明您不需要三個嵌套循環來完成此任務。
代碼:(演示)
for ($i = 0; $i < 4; ++$i) {
for ($s = '', $j = 0; $j < 4; ++$j) {
$s .= ($i + $j) % 4 + 1;
echo $s . "\n";
}
}
輸出:
1
12
123
1234
2
23
234
2341
3
34
341
3412
4
41
412
4123
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.