FizzBuzzWhizz 需求:
- when run(3) return 'Fizz'
- when run(5) return 'Buzz'
- when run(7) return 'Whizz'
- when run(3 * 5) return 'FizzBuzz' //run 的參數(shù)為 3和5共同的倍數(shù)
- when run(3 * 7) return 'FizzWhizz' //run 的參數(shù)為 3和7共同的倍數(shù)
- when run(5 * 7) return 'BuzzWhizz' //run 的參數(shù)為 5和7共同的倍數(shù)
- when run(3 * 5 * 7) return 'FizzBuzzWhizz' //run 的參數(shù)為 3、5和7共同的倍數(shù)
- 其余情況:when run(n) return n // n 可以為 非 3、5、 7或3、5、7的倍數(shù)的數(shù)字 如:run(2) return '2'
按要求可分為兩種情況
- 不是3、5、7的倍數(shù),返回輸入的數(shù)值。
- 是3、5、7的倍數(shù),按要求返回字符串(Fizz、Buzz、Whizz、FizzBuzz、FizzWhizz、BuzzWhizz、FizzBuzzWhizz)
按照這兩種情況可寫一個測試程序判斷是否可被3、5、7整除,若能則具體討論,若不能就直接輸出輸入的數(shù)字。
function test(Num){
if(Num%3==0||Num%5==0||Num%7==0){
let result=run(Num); //執(zhí)行run()功能函數(shù)
document.write('</br>'+result)
}
else{
document.write('</br>'+Num)
}
}
再具體討論num是可被哪些數(shù)整除。
考慮到各種情況都是可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
總結體會
- 在開始編程之前考慮輸入什么,要達到怎樣的結果。
- 再觀察有輸出字符串什么規(guī)律,怎樣可以做到這樣。
- 有簡單的思路之后再考慮是否可以再優(yōu)化一下或者說更簡單的方式。