具體是什麼問題,請自行百度。
簡單的講就是,編寫一個程序把1-100的數字打印出來。不過,要把3的倍數打成”Fizz”,把5的倍數打成”Buzz”。而如果一個數既是3的倍數。又是5的倍數時,就打成”Fizz-Buzz”,其餘的輸出數字。
初次看到問題,我的解決辦法如下(用JavaScript語言):
for (var i = 1; i <= 100; i++) {
if ( i % 3 == 0 && i % 5 == 0) {
document.write('Fizz-Buzz');
document.write(', ');
}else if (i % 3 == 0) {
document.write('Fizz');
document.write(', ');
}else if (i % 5 == 0) {
document.write('Buzz');
document.write(', ');
}else {
document.write(i);
document.write(', ');
}
}
打印的結果如圖:
結果顯示算是正常。
再看下面這種寫法:
for (var i = 1; i <= 100; i++) {
if (i % 3 == 0) {
if (i % 5 == 0) {
document.write('Fizz-Buzz');
document.write(', ');
} else {
document.write('Fizz');
document.write(', ');
}
} else if (i % 5 == 0) {
document.write('Buzz');
document.write(', ');
} else {
document.write(i);
document.write(', ');
}
}
看起來差不多,但是第一種寫法最多需要進行3次判斷,而第二種寫法最多隻要2此,效率略高。
這裏還有一些大神的算法:你的代碼能有多短?FizzBuzzBazz問題等你來挑戰!