为了账号安全,请及时绑定邮箱和手机立即绑定

如何将这些“ if”语句转换为算法

如何将这些“ if”语句转换为算法

慕雪6442864 2021-04-26 16:10:43
我正在尝试将这些'if'语句转换为算法,以便我可以有更多的阶段而不是被限制为10。如何转换它?我只是无法理解逻辑!function getStage(km) {     if (km > 2 && km < 4){        return 1;    }    else if (km > 4 && km < 6){        return 2;    }    else if (km > 6 && km < 8){        return 3;    }    else if (km > 8 && km < 10){        return 4;    }    else if (km > 10 && km < 12){        return 5;    }    else if (km > 12 && km < 14){        return 6;    }    else if (km > 14 && km < 16){        return 7;    }    else if (km > 16 && km < 18){        return 8;    }    else if (km > 18 && km < 20){        return 9;    }    else if (km > 20 && km < 22){        return 10;    }}我已经试过了:function getStage(km) {     var tempStage = 0;    for (var i = 0; i < stages; i++) {        var stage = i + 1;        var tempKm = stage * 2;        var nextKm = stage + 2;        if (km > tempKm && km < nextKm) {            tempStage = stage;        }    }    return tempStage;}也许我不应该使用for循环?有更好的方法吗?
查看完整描述

3 回答

?
九州编程

TA贡献1785条经验 获得超4个赞

也许您正在寻找Math.floor


function getStage(km) {

    return Math.floor(km / 2)

}

console.log(getStage(2));

// 1

console.log(getStage(10));

// 5

console.log(getStage(11));

// 5


查看完整回答
反对 回复 2021-05-13
?
偶然的你

TA贡献1841条经验 获得超3个赞

您可以将底值km除以2加1。


10 是上限。


function getStage(km) {

    return Math.min((km >> 1) + 1, 10);

}


console.log(getStage(2.1)); // 2

console.log(getStage(3)); // 2

console.log(getStage(4)); // 4


查看完整回答
反对 回复 2021-05-13
?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

您可以使用数学来做到这一点。无需循环或条件。

请注意,您的输入间隔以2的“步长”增加,而输出以1的“步长”增加。这使我认为也许应该将km除以2
由于我们总是想要一个整数答案,因此我们可以使用floor函数。

一些示例:
floor(3/2)= 1
floor(4.1 / 2)= 2
等等。

根据您要返回的极端情况(如果km = 2或km = 4或2的倍数是多少?),我们可以在此处完成操作。如果您希望在k = 4时返回1,在k = 6时返回2,依此类推,则需要做更多的工作。

*通常:*如果您正在处理数字,并且发现自己写了很多个案,则通常可以使用一些简单的数学运算符组合来计算结果。对于此类问题,请尝试考虑您的输入/输出对以及它们之间的关系。


查看完整回答
反对 回复 2021-05-13
  • 3 回答
  • 0 关注
  • 186 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信