问题是按以下规则计算的士司机的总成本:
输入的距离单位是公斤。
(改变距离是很容易的,所以不用费心。)
因为这是流行测验的一个问题,我根本没有学习,所以我就拿出了这个解决方案。
function counter(distance) {
distance = distance * 1000;
meter = 0;
totalCost = 0;
while (meter <= distance) {
if (meter <= 100) {
totalCost = 100;
}
if (meter > 100 && meter <= 500) {
totalCost = totalCost + 50;
}
if (meter > 500) {
totalCost = totalCost + 10;
}
meter = meter + 1;
}
return totalCost;
}
这太愚蠢了因为有那么多的重复。你们能告诉我解决这个问题的正确方法吗?
发布于 2021-02-23 15:09:07
这不是太重复
function counter(distance) {
let totalCost = 0, dist = distance * 1000;
for (let m = 1; m <= dist; m++) {
if (m <= 100) totalCost += 100;
else totalCost += (m <= 500) ? 50 : 10;
}
return totalCost;
}
console.log(1000*.001,counter(.001))
console.log(1000*.01,counter(.01))
console.log(1000*.1,counter(.1))
console.log(1000*.2,counter(.2))
console.log(1000*.5,counter(.5))
console.log(1000,counter(1))
发布于 2021-02-23 15:06:08
您可以一次检查一个条件并减少下一个条件的问题,如下所示:
function counter(distance) {
distance = distance * 1000;
let totalCost = 0;
if (distance > 500) {
totalCost += (distance - 500) * 10;
distance = 500;
}
if (distance > 100) {
totalCost += (distance - 100) * 50;
distance = 100;
}
if(distance>0)
totalCost += distance * 100;
return totalCost;
}
console.log(counter(.1))
console.log(counter(.01))
发布于 2021-02-23 15:16:40
var distance = 2
function counter(distance) {
distance = distance * 1000;
const p_r = [100,50,10]
const d_r = [100,400, distance-500]
var totalCost = 0
for (i = 0; i < 3; i++) {
distance = distance - d_r[i]
totalCost += d_r[i]*p_r[i]
console.log(distance +" "+ totalCost)
}
const t_cost = totalCost-9900
return "t cost: "+t_cost;
}
console.log(counter(distance))
不太漂亮,但它很短,而且绝对是一种不同的方法。它给出了同样的输出。
https://stackoverflow.com/questions/66335529
复制相似问题