我参加了一次工作面试,被要求用 PHP 解决 FizzBuzz 问题。
编写一个程序,打印从 1 到 100 的数字。但是对于 3 的倍数,打印“Fizz”而不是数字;对于 5 的倍数,打印“Buzz”。对于三和五的倍数的数字打印“FizzBuzz”。
我以前从未听说过 FizzBuzz,但这是我解决它的方法,因为我不知道模数或如何使用它:
for ($i = 1; $i <= 100; $i++){
if($i / 3 == round($i / 3) && $i / 5 == round($i / 5)){
echo $i . " is FizzBuzz<br />";
}
else if($i / 3 == round($i / 3)){
echo $i . " is Fizz<br />";
}
else if($i / 5 == round($i / 5)){
echo $i . " is Buzz<br />";
}
else {
echo $i."<br />";
}
}
我用谷歌搜索,没有找到任何有关 round 的解决方案,这让我想到可能有问题,这是我发现的与我的接近的解决方案之一:
for ($i = 1; $i <= 100; $i++){
if($i % 3 == 0 && $i % 5 ==0){
echo "FizzBuzz<br />";
}
else if($i % 3 == 0){
echo "Fizz<br />";
}
else if($i % 5 == 0){
echo "Buzz<br />";
}
else {
echo $i."<br />";
}
}
我的代码工作正常,但有什么我看不到的问题吗?
实际上他们正在测试你如何解决如此简单的任务。它应该是令人难以置信的优化,代码应该干净且易于阅读。
您的代码版本不好。
你在网上找到的版本比较好,但是从优化的角度来看并不理想。
尝试思考如何以更少的行动来实现目标。
一些技巧:
我的代码示例:
for ($i = 1; $i <= 100; $i++) {
if ($i % 15 == 0) {
echo 'FizzBuzz<br>';
} elseif ($i % 3 == 0) {
echo 'Fizz<br>';
} elseif ($i % 5 == 0) {
echo 'Buzz<br>';
} else {
echo $i . '<br>';
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)