雜記——FizzBuzz問題

具體是什麼問題,請自行百度。

簡單的講就是,編寫一個程序把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問題等你來挑戰!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章