微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PHP 循环并从循环中删除一个字符

如何解决PHP 循环并从循环中删除一个字符

我正在为大学进行阶乘循环测试,但我无法弄清楚这一点。我想做阶乘计算并回显它,但也要删除一些计算。
所以我希望它显示
5 的因数是 120
5 x 4 x 3 x 2 x 1 = 120

但我得到的是:
5 的因数是 120
5 x 4 x 3 x 2 x 1 x = 120

这是我目前在PHP括号内的代码

$i = $num;
do
  {
      echo strrev(" x $i ");
    $i--;
  } while($i > 0);
  echo (" = $factorial");

解决方法

您可以将 while() 条件增加一个并在循环 (Demo) 之后添加另一个 echo,但我不建议这样做。

do-while() 循环不适合您的场景,如果 $i = 1.您应该使用预测试循环。我还使用组合的“乘法赋值”运算符来增加最终产品。

代码:(Demo)

for ($i = 5,$product = 1; $i > 1; --$i) {
    echo $i . ' x ';
    $product *= $i;
}
echo $i . ' = ' . ($product * $i);

在专业应用程序中,我可能会使用函数式编程,但您可能只是将其用作学术练习。无论如何,这是这种风格的一种外观:

代码:(Demo)

$i = 5;
$range = range($i,1);

printf(
    '%s = %d',implode(' x ',$range),array_product($range)
);
,

这样就可以了:

$i = $num;
$factorial = 1;
$sep = "";
do {
    echo "$sep $i";
    $factorial = $factorial * $i;
    $i--;
    $sep = " x";
  } while($i > 0);
  echo ("  = $factorial");
,

你可以试试这个:

$i = $num;
$factorial = 1;
while($i > 0);
  {
       echo $i . ' x ';
       //if($i>1) echo strrev(" x $i "); strrev would produce undesired output when $num is 10 or greater as pointed out by @wire
      else echo $i;
      $factorial = $factorial * $i;
      $i--;
  }
  echo (" = $factorial");

或者使用 Ternary operator 像:

$i = $num;
$factorial = 1;
while($i > 0){
    echo( $i>1 ? $i . ' x '  : $i);
    $factorial = $factorial * $i;
    $i--;
}
echo (" = $factorial");

考虑到@mickmackusa 的输入,我修改了我的答案以达到目的。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。