FizzBuzzWhizz 需求:
- when run(3) return 'Fizz'
- when run(5) return 'Buzz'
- when run(7) return 'Whizz'
- when run(3 * 5) return 'FizzBuzz' //run 的参数为 3和5共同的倍数
- when run(3 * 7) return 'FizzWhizz' //run 的参数为 3和7共同的倍数
- when run(5 * 7) return 'BuzzWhizz' //run 的参数为 5和7共同的倍数
- when run(3 * 5 * 7) return 'FizzBuzzWhizz' //run 的参数为 3、5和7共同的倍数
- 其余情况:when run(n) return n // n 可以为 非 3、5、 7或3、5、7的倍数的数字 如:run(2) return '2'
按要求可分为两种情况
- 不是3、5、7的倍数,返回输入的数值。
- 是3、5、7的倍数,按要求返回字符串(Fizz、Buzz、Whizz、FizzBuzz、FizzWhizz、BuzzWhizz、FizzBuzzWhizz)
按照这两种情况可写一个测试程序判断是否可被3、5、7整除,若能则具体讨论,若不能就直接输出输入的数字。
function test(Num){
if(Num%3==0||Num%5==0||Num%7==0){
let result=run(Num); //执行run()功能函数
document.write('</br>'+result)
}
else{
document.write('</br>'+Num)
}
}
再具体讨论num是可被哪些数整除。
考虑到各种情况都是可3,5,7被整除即加上相应字符串,不可被其中的一个整除即不加,而且是按从3,5到7的顺序。所以只需讨论三种不同的情况即可。
先定义一个字符串变量
var n='';
如果num可被3整除,那么
if(num%3==0){
n+="Fizz" //n=n.concat("Fizz"),,+=和concat用法相似
}
同样的num可被5、7整除
if(num%5==0){
n+="Buzz";
//n=n.concat("Buzz")
}
if(num%7==0){
//n=n.concat("Whizz")
n+="Whizz";
}
最后返回字符串n即可
代码
function run(num){
var n="";
if(num%3==0){
n+="Fizz";
}
if(num%5==0){
n+="Buzz";
}
if(num%7==0){
n+="Whizz";
}
return n.toString();
}
function test(Num){
if(Num%3==0||Num%5==0||Num%7==0){
let result=run(Num);
document.write('</br>'+result)
}
else{
document.write('</br>'+Num)
}
}
test(2)
test(3)
test(5)
test(7)
test(15)
test(21)
test(35)
test(105)
测试结果
2
Fizz
Buzz
Whizz
FizzBuzz
FizzWhizz
BuzzWhizz
FizzBuzzWhizz
总结体会
- 在开始编程之前考虑输入什么,要达到怎样的结果。
- 再观察有输出字符串什么规律,怎样可以做到这样。
- 有简单的思路之后再考虑是否可以再优化一下或者说更简单的方式。