题目:
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'
作业要求:
1.通过document.write()方法,将以上需求的每一条调用结果打印出来,结果会在屏幕右边显示
2.为每一条需求写一个测试,测试例子请见实例方法 test1
代码:
/**
* Created by Aya on 2017/3/29.
*/
function run(num) {
if(num==3)
return 'Fizz';
if(num==5)
return 'Buzz';
if(num==7)
return 'Whizz';
if(num%3==0&&num%5==0){
if(num%7==0)
return 'FizzBuzzWhizz';
else
return 'FizzBuzz';
}
if(num%3==0&&num%7==0){
if(num%5==0)
return 'FizzBuzzWhizz';
else
return 'FizzWhizz';
}
if(num%5==0&&num%7==0){
if(num%3==0)
return 'FizzBuzzWhizz';
else
return 'BuzzWhizz';
}
else
return result=num;
}
var test = function() {
let result = run(4);
if(result == 'Fizz') {
document.write('when run(3) return '+ '"'+result+'"')
}
//let result = run(5);
if(result == 'Buzz') {
document.write('when run(5) return '+ '"'+result+'"')
}
if(result =='Whizz'){
document.write('when run(7) return '+ '"'+result+'"')
}
if(result =='FizzBuzz'){
document.write('when run(3*5) return '+ '"'+result+'"')
}
if(result =='FizzWhizz'){
document.write('when run(3*7) return '+ '"'+result+'"')
}
if(result =='BuzzWhizz'){
document.write('when run(5*7) return '+ '"'+result+'"')
}
if(result =='FizzBuzzWhizz'){
document.write('when run(3*5*7) return '+ '"'+result+'"')
}
else
document.write('when run ('+result+') return '+ result)
}
test()
总结:
这道题一上手就是想着按顺序做多个判断,每个判断都作测试,然后进行输出,测试结果也没有问题。
但是经过和组内的一些成员交流后发现其实这道题的可能性有很多,很灵活,而自己用的应该算是代码量最多思路最简单的一种,其实还可以使用定义数组将所显示的字符串进行存储,然后以是否输出该字符串作为判断标准,这样就只需要进行三次判断就可以了,几乎减少了一半的代码量。而在上传第一稿的时候看到王静同学用的方法,代码量几乎为我的三分之一,方法兼容性也很好,很受启发。