首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >javascript :基于3个距离范围计算出租车成本

javascript :基于3个距离范围计算出租车成本
EN

Stack Overflow用户
提问于 2021-02-23 14:56:21
回答 4查看 379关注 0票数 1

问题是按以下规则计算的士司机的总成本:

  • 为前100米,租金为100米/米,
  • 为下100米至前500米,租金为50米/米,
  • 为500米,租金为10米/米。

输入的距离单位是公斤。

(改变距离是很容易的,所以不用费心。)

因为这是流行测验的一个问题,我根本没有学习,所以我就拿出了这个解决方案。

代码语言:javascript
运行
复制
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;
}

这太愚蠢了因为有那么多的重复。你们能告诉我解决这个问题的正确方法吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2021-02-23 15:09:07

这不是太重复

代码语言:javascript
运行
复制
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))

票数 0
EN

Stack Overflow用户

发布于 2021-02-23 15:06:08

您可以一次检查一个条件并减少下一个条件的问题,如下所示:

代码语言:javascript
运行
复制
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))

票数 0
EN

Stack Overflow用户

发布于 2021-02-23 15:16:40

代码语言:javascript
运行
复制
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))

不太漂亮,但它很短,而且绝对是一种不同的方法。它给出了同样的输出。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66335529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档