题目:
写一个程序,输出从 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到数组中去。
最后循环结束,输出空数组即可。