首页 > 试题广场 >

流程控制

[编程题]流程控制
  • 热度指数:102596 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
实现 fizzBuzz 函数,参数 num 与返回值的关系如下:
1、如果 num 能同时被 3 和 5 整除,返回字符串 fizzbuzz
2、如果 num 能被 3 整除,返回字符串 fizz
3、如果 num 能被 5 整除,返回字符串 buzz
4、如果参数为空或者不是 Number 类型,返回 false
5、其余情况,返回参数 num

输入描述:
15


输出描述:
fizzbuzz
示例1

输入

15

输出

fizzbuzz
推荐

能否整除即余数是否为0,则使用%运算符。使用if-elseif结构,只要某一条匹配,则下面的不会在进行判断。判断num是否为Number,可以用typeof运算符,返回的是字符串。

function fizzBuzz(num) {
    if(num%3 == 0 && num%5 == 0)
        return "fizzbuzz";
    else if(num%3 == 0)
        return "fizz";
    else if(num%5 == 0)
        return "buzz";
    else if(num == null || typeof num != "number")
        return false;
    else return num;
}


编辑于 2015-08-18 21:02:07 回复(37)
function fizzBuzz(num) {
     var reg =/\d+/g    //因为正则用多了忘记了typeof
     if(!reg.test(num)){
         return false
     }
    else if(num%3==0||num%5==0){
        if(num%5==0&&num%3==0){
            return 'fizzbuzz';
        }
        else if(num%3!=0)    
            return 'buzz'
        else 
            return 'fizz'
    }
    else
        return num
}
发表于 2021-05-18 22:12:31 回复(0)
function fizzBuzz(num) {
     if(!(typeof num === 'number')||num == ""){
        return false
    }
    
    let flag1 = num % 3 === 0 && num % 5 === 0
    let flag2 = num % 3 ===0 
    let flag3 = num % 5 ===0
    
    if(flag1){
        return "fizzbuzz"
    }else if(flag2){
        return "fizz"
    }else if(flag3){
        return "buzz"
    }else{
        return num
    }
    
}
if elseif else 流程判断
发表于 2021-03-31 22:57:53 回复(0)
function fizzBuzz(num) {
    var str = ""
    if(typeof num === "number") {//判断num是否为数字
        //是数字就按顺序判断是否整除,给str加内容
        if(num%3 === 0){
            str = str.concat("fizz")
        } 
        if(num%5 === 0) {
            str = str.concat("buzz")
        }
        //判断str是否为空,为空则直接返回num,不为空返回str
        if(str === "") {
            return num
        }
        else return str
    } else //不是数字返回F
        return false
}

发表于 2020-08-03 10:02:39 回复(0)
function fizzBuzz(num) {
    let res = null;
    if (!!num === false || typeof (num) !== 'number') {
        return false;
    }
    if (num % 5 === 0 && num % 3 === 0) {
        res = 'fizzbuzz';
    } else if (num % 3 === 0) {
        res = 'fizz';
    } else if (num % 5 === 0) {
        res = 'buzz';
    } else {
        res = num;
    }
    return res;
}
注意typeof后的值为字符串即可。
发表于 2020-07-16 13:58:02 回复(0)
function fizzBuzz(num) {
    var res = num;
    if(num === "" || isNaN(num)){
        res = false;
    }else if(num % 3 == 0 && num % 5 == 0){
        res = "fizzbuzz";
    }else if(num % 3 == 0){
        res = "fizz";
    }else if(num % 5 == 0){
        res = "buzz";
    }
    return res;
}

发表于 2020-04-11 16:56:33 回复(0)
function fizzBuzz(num) {
    if(num % 3 == 0 && num % 5 == 0) {
        return 'fizzbuzz';
    }
    else if(num % 3 == 0) {
        return 'fizz';
    }
    else if(num % 5 == 0) {
        return 'buzz';
    }
    else if(!num || typeof num != 'number') {
        return false;
    }
    else {
        return num;
    }
}

编辑于 2019-08-10 09:15:16 回复(0)
function fizzBuzz(num) {
    if(num !== undefined && Object.prototype.toString.call(num) === "[object Number]"){
        var three = num%3 === 0;
        var five = num%5 === 0;
        if(three){
            return five ? 'fizzbuzz' : 'fizz';
        }else{
            return five ? 'buzz' : num;
        }
    }
    return false;
}
讨论里的思想总结:
1. 注意判断类型时不用typeof和instanceof,用Object.prototype.toString.call更靠谱
2.fizz,buzz字符串相加的思路很值得参考。
发表于 2019-08-05 09:33:27 回复(0)
function fizzBuzz(num) {
    if((num%3 == 0)&&(num%5 == 0)){
        return "fizzbuzz";
    }else if(num%3 == 0){
        return "fizz";
    }else if(num%5 == 0){
        return "buzz";
    }else if((num==null)||(num instanceof Number)){    //注意:这里不能使用instansof,应该使用typeof。
        return false;
    }else{
        return num;
    }
}
区别:typeof是判断变量是什么基本类型的;
          instanceof是判断对象到底是什么类型的;

不能使用instanceof,是因为:instanceof一般用来检测引用类型的值,检测是什么类型的对象。而如果使用instanceof操作符检测基本类型的值,则该操作符始终会返回会false,因为基本类型不是对象。(这就是instanceof和typeof的区别)。
检测一个变量是不是基本数据类型,typeof是最佳的操作工具。

发表于 2019-08-02 18:05:14 回复(0)
function fizzBuzz(num) {
    if(num == '' || num == null || typeof num != 'number'){
        return false;
    }
    // var str = '';
    if(num % 3 === 0 && num % 5 === 0){
        return 'fizzbuzz';
    }
    if(num % 3 === 0){
        return 'fizz';
    }
    if(num % 5 === 0){
       return 'buzz'; 
    }
    return num;
}

发表于 2019-05-17 20:40:12 回复(0)
function fizzBuzz(num) {
    var str = '';
    if(typeof num !== 'number')return false;
    if(num % 3 === 0)str += 'fizz';
    if(num % 5 === 0)str += 'buzz';
    return str?str:num;
}
发表于 2019-02-22 10:30:39 回复(0)
function fizzBuzz(num) { if (typeof num === 'number' && num) { var str = ''  str += num % 3 == 0 ? 'fizz' : ''  str += num % 5 == 0 ? 'buzz' : ''  if(str){ return str  } return num
    } else { return false  }
}

发表于 2019-01-06 15:13:13 回复(0)
function fizzBuzz(num) {
    if (num == null || typeof num != "number"){
        return false
    }
    if(num % 3 == 0 && num % 5 == 0){
        return "fizzbuzz"
    }else if(num % 3 == 0){
        return "fizz"
    }else if(num % 5 == 0){
        return "buzz"
    }

    return num
}
发表于 2018-12-01 11:40:15 回复(0)
function fizzBuzz(num) {
    if(num%3==0 && num%5==0){
        return 'fizzbuzz'
    }else if(num%3==0 && num%5!=0){
        return 'fizz'
    }else if(num%3!=0 && num%5==0){
        return 'buzz'
    }else if(typeof num != "number" || typeof num == "undefined"){
        return false
    }
    return num
}
简单的if else if 语句,最后类型我是采用了typeof进行类型的判断,注意返回的是字符串
发表于 2018-11-16 09:44:43 回复(0)
function fizzBuzz(num) {
    if(num==null||isNaN(num)){
        return false;
    }else if(num%3==0&&num%5==0){
        return "fizzbuzz";
    }else if(num%3==0){
        return "fizz";
    }else if(num%5==0){
        return "buzz";  
    }else{
        return num;
    }
}

发表于 2018-04-19 12:35:09 回复(0)
function fizzBuzz(num) {
    switch (true) {
        case num == null || num == '' || typeof (num) != 'number':
            return false;
        case num % 15 == 0:
            return "fizzbuzz";
        case num % 3 == 0:
            return "fizz";
        case num % 5 == 0:
            return "buzz";
        default:
            return num;
    }
}

发表于 2018-03-25 17:11:01 回复(0)
function fizzBuzz(num) {
    if(num === '' || num == null || num == undefined) {
        return false
    } else if(isNaN(num)) {
        return false
    } else if(num%3 === 0 && num%5 === 0) {
        return 'fizzbuzz'
    } else if(num%3 === 0) {
        return 'fizz'
    } else if(num%5 === 0) {
        return 'buzz'
    } else {
        return num
    }   
}

发表于 2018-03-20 14:51:41 回复(0)

function fizzBuzz(num) {
  if(!isNumber(num)||isEmpty(num)){
    return false;
  }else if (num%15==0){
    return "fizzbuzz";
  }else if(num%3==0) {
    return "fizz";
  }else if(num%5==0){
    return "buzz";
  }else{
    return num;
  }

 
}
 function isEmpty(obj){
    return typeof obj == "undefined" || obj == null || obj === "";
  }
  function isNumber(obj){
    return obj===+obj;
  } 

还是应该考虑的尽量周全一点,对一些特殊值进行校验。
输入:NaN   输出:false  。type of NaN虽然是Number,实际我们不会把它当做“数字“
输入:0  输出:fizzbuzz  。0能被15整除
输入:undefined 输出:false。 不是数字
输入:120 输出:fizzbuzz  。120能被15整除
输入:“120” 输出:false。不要自动转换类型。


编辑于 2018-01-31 16:28:25 回复(0)
function fizzBuzz(num) {
    if(typeof num != 'number') return false   
    else if(!(num%3) && !(num%5)) return 'fizzbuzz'
    else if(!(num%3)) return 'fizz'
    else if(!(num%5)) return 'buzz'
    else return num
}

发表于 2017-10-10 14:24:56 回复(0)
//用希留的方法在牛课上过了,但是在本机测试并没过,
//当数据是null的时候输出不对,然后我加了条件后过了,但是不知道为什么,求解答。 
var num1 = 3,
			num2 = 5,
			num3 = 15,
			num4 = null,
			num5 = 'str',
			num6 = 16;

		function fizzBuzz(num) {    
			if(num % 3 == 0 && num % 5 == 0 && num != null)         return "fizzbuzz";    
			else if(num % 3 == 0 && num != null)         return "fizz";    
			else if(num % 5 == 0 && num != null)         return "buzz";    
			else if(num == null || typeof num != "number")         return false;    
			else return num;
		}
		console.log("3" + fizzBuzz(num1));
		console.log("5" + fizzBuzz(num2));
		console.log("15" + fizzBuzz(num3));
		console.log("null" + fizzBuzz(num4));
		console.log("str" + fizzBuzz(num5));
		console.log("16" + fizzBuzz(num6));

编辑于 2017-07-13 15:52:38 回复(0)
function fizzBuzz(num) {
switch(true){
        case num%3==0&&num%5==0:
            return "fizzbuzz";
         break;
        case num%3==0:
            return "fizz";
            break;
        case num%5==0:
            return "buzz";
            break;
        case arguments.length == 0 || isNaN(num)==true:
            return false;
            break;
        default:
            return num;
            break;
    }
}
发表于 2017-07-01 23:59:13 回复(0)