这是一个正方形图案,每行有5列,有5行,图案如下所示:
5 4 3 2 1
4 3 2 1 5
3 2 1 5 4
2 1 5 4 3
1 5 4 3 2
我的代码如下所示,以获得模式,但当计数器变为1并显示在相应的列值时,我无法重置每个模式中的值.
任何人都可以指导我缺乏逻辑吗?
$n=5;
$count=5;
for($i=5;$i>=1;$i--){
for($j=$count;$j>=1;$j--)
{
if($count>=1)
echo $j." ";
}
$count--;
echo "\n";
}
?>
解决方法:
我认为这是一个学习练习,所以必须用for循环来完成.
$n=5;
for($i=$n; $i>=1; $i--) {
for($j=$n; $j>=1; $j--) {
echo ($i + $j - 1) % $n + 1;
echo ' '; // cosmetics :)
}
echo "\n";
}
?>
%是模运算符. 6%5 =其余从6除以5 = 1.
例子:1%5 = 1; 5%5 = 0; 12%5 = 2.
这很容易超过模运算(http://en.wikipedia.org/wiki/Modular_arithmetic).每个新行都不是简单的加法操作,而是在5-mod数字集中(对于从较小数字开始的每一行).我认为这是解决这个问题的最佳和单线解决方案.此外,操作简单,并且不耗时.
最好的祝福!
标签:php,for-loop
来源: https://codeday.me/bug/20190714/1459348.html