编写Cost Function遇运行问题,求助排查JavaScript代码错误
问题分析与解决方案
你的R代码无法正常返回结果的核心问题是函数没有明确传递计算出的成本值,另外还有可以优化的逻辑写法,下面详细拆解说明:
错误点梳理
- 在R语言中,自定义函数如果没有用
return()指定返回值,会默认返回函数体最后一行的执行结果,但你的代码里只是给变量cost赋值,却没有将这个值传递出去。而且你在函数内部使用了和函数同名的变量cost,这虽然不会直接报错,但容易造成逻辑混淆。 - 第二个独立的
if语句可以改成else,这样逻辑更连贯,避免了对同一个条件做两次判断的冗余操作。
修正后的代码
cost <- function(n) { if (n <= 100) { result <- n * 4 } else { result <- 2.5*(n - 100) + 100*4 } return(result) } # 测试验证 cost(5) # 预期返回20 cost(120) # 预期返回450
更简洁的写法(可选)
你也可以利用R的向量运算特性,不用分支判断就能实现相同逻辑,代码更紧凑:
cost <- function(n) { pmin(n, 100)*4 + pmax(n - 100, 0)*2.5 }
这个写法的逻辑是:先计算不超过100公斤部分的4美元成本,再加上超出100公斤部分(没超出则取0)的2.5美元成本,最终结果和分支判断完全一致。
内容的提问来源于stack exchange,提问作者Han
相关产品推荐
相关产品推荐

