FizzBuzzWhizz

作者: __已注销__ | 来源:发表于2017-04-01 22:11 被阅读0次

    黑珍珠号_陈祥梅


    题目需求

    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.为每一条需求写一个测试。


    TASKing分解图

    TASKing分解图

    思路分析及代码实现

    需求如上图所示可分为两种情况:

    • 输入数字输出原数字
    • 输入数字输出指定字符串

    处理函数流程图如下:

    流程图

    处理函数代码如下:

    function run(num){
        let result ='';
        var flag=0;
        if(num%3===0) {
            result += 'Fizz';
            flag=1;
        }
        if(num%5===0) {
            result = result + 'Buzz';
            flag=1;
        }
        if(num%7===0) {
            result+='whizz';
            flag=1;
        }
        if(flag===0){
            return num.toString();
        }
        return result;
    }
    

    经检查变量flag不断出现在不同if语句中,于是想到是否可以去掉标志位变量flag。联想到C语言中有三目预算符test?result1 :result2,于是上网查找JS中类似的运算符。

    优化后的处理函数如下:

    function run(num) {
        let result ='';
        if(num%3===0) {
            result +='Fizz';
        }
        if(num%5===0) {
            result=result+'Buzz';
        }
        if(num%7===0) {
            result+='whizz';
        }
        return result||num;
    }
    

    测试结果如下:

    test

    相关文章

      网友评论

        本文标题:FizzBuzzWhizz

        本文链接:https://www.haomeiwen.com/subject/enswottx.html