簡體   English   中英

使用循環和模數計算打印三角數模式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM