每周一题:Fizz Buzz(更新JS)

题目:

写一个程序,输出从 1 到 n 数字的字符串表示。

1. 如果 n 是3的倍数,输出“Fizz”;

2. 如果 n 是5的倍数,输出“Buzz”;

3.如果 n 同时是3和5的倍数,输出 “FizzBuzz”。

示例:

n = 15,

返回:
["1","2","Fizz","4","Buzz","Fizz","7","8","Fizz","Buzz","11","Fizz","13","14","FizzBuzz"]

 

通过率:

 

代码:

var fizzBuzz = function(n) {
    let arr=[];
    for(let i=1;i<n+1;i++){
        if(i%3==0&&i%5==0){
            arr.push('FizzBuzz');
        }
        else if(i%3==0){
            arr.push('Fizz');
        }
        else if(i%5==0){
            arr.push('Buzz')
        }
        else{
            arr.push(i.toString());
        }
    }
    return arr;
};

 

思路:

首先这道题目,我们只需要知道一个数字是不是3或者5的倍数即可,它只有四种可能,3的倍数,5的倍数,3和5共同的倍数,和不是3和5的倍数。所以我们可以在循环中写一个if else语句来分情况输出。在开头我们需要建立一个空数组,到时候将每一个数字的判定结果输入到数组内保存,等循环结束后就可以通过这个数组进行输出。

第二步是写循环体,题 目中要求的数字范围是在1~n之间,所以我们循环的条件应该与n有关,注意在这里,设置变量初始值应为1而不是0,范围应该在[1,n+1]之间,所以当变量值达到n+1时就可结束循环了,而不会再进行一个轮回。接着我们在循环里写条件语句,原先设定的条件是判断变量除以3或者5所得到的结果是否为整数,但后来我发现这样设置判断条件会导致运算量过大,于是将其转换成了变量除以3或5后判断余数是否为0,再根据其所对应的结果,如Buzz,Fizz,FizzBuzz等分割情况,最后用push()方法将结果加入最开始建立好的空数组中。注意,当这个数不是3也不是5的倍数时,直接输出这个数字push到数组中去。

最后循环结束,输出空数组即可。

posted on 2020-06-17 20:12  沈卢  阅读(305)  评论(0编辑  收藏  举报

导航