【问题标题】:PHP FizzBuzz LogicPHP FizzBu​​zz 逻辑
【发布时间】:2015-01-13 17:03:49
【问题描述】:

当我们编写 fizzbuzz 脚本时,为什么要测试它是否等于 0?还是我误会了?

示例:$i % 3 == 0

<?php
for ($i=1; $i<=100; $i++) {
    if ($i%3==0 && $i%5==0) {
        echo 'FizzBuzz';
    }else if($i%3==0){
        echo 'Fizz';
    }else if($i%5==0){
        echo 'Buzz';
    }else{
        echo $i;
    }
    echo "\n";
}

【问题讨论】:

  • 'n 能被 x 整除' => 'n % x === 0'.

标签: php logical-operators fizzbuzz


【解决方案1】:

更简洁但更难阅读的解决方案:

for ($i=1;$i<=100;$i++) { 
    print ( (fmod(($i/3),1)  ?  '' : "fizz") . (fmod(($i/5),1)  ?  '' : "buzz")  ?:  ("$i") ) ."\n"; 
}

【讨论】:

  • 始终包含代码说明并确保其格式正确。
【解决方案2】:
<?php
array_map(function($l) {
  echo $l . PHP_EOL;
}, array_map(function($i) {
  $is_fizz = ($i % 3) === 0;
  $is_buzz = ($i % 5) === 0;
  return (!$is_fizz && !$is_buzz) ? $i : 
    ($is_fizz ? 'Fizz' : '') . ($is_buzz ? 'Buzz' : '');
}, range(1 , 100)));

【讨论】:

  • 所提供的答案被标记为低质量帖子以供审核。以下是How do I write a good answer? 的一些指南。提供的这个答案可能是正确的,但它可以从解释中受益。仅代码答案不被视为“好”答案。来自review
【解决方案3】:

如果一个数能被 3 整除,程序 fizzbuzz 打印“fizz”,如果一个数能被 5 整除,则打印“buzz”,如果一个数能被两者整除,则打印“fizzbuzz”。

您的程序不检查数字是否等于 0,而是使用 modulo 运算符检查 余数 是否为 0。

$i%3==0 表示数字可以被 3 整除

$i%5==0 表示数字可以被 5 整除

$i%5==0 &amp;&amp; $i%3==0 表示这个数可以被两者整除

【讨论】:

  • 这很有帮助。我现在完全明白了。谢谢你教育我!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-21
  • 2018-07-18
  • 2012-11-04
  • 2016-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多