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

为什么没有返回突破这个功能?

为什么没有返回突破这个功能?

qq_遁去的一_1 2021-06-09 17:16:41
在对 coderbyte 进行挑战时,我找到了其他人的解决方案。然而,他的代码不适用于其中一个测试用例,但我不明白为什么。挑战信息:输入是一个由 2 个字符串组成的数组,第一个字符串包含 2 个数字,表示秤两侧的权重。第二个字符串包含您可以用来尝试平衡秤的权重。目标:用最少的权重(最大 2)平衡秤并输出您使用的权重。代码输出 1,6,它确实平衡了秤,但秤也可以仅通过一个重量来平衡, 5. 为什么第一个“返回”没有脱离函数?function ScaleBalancing(strArr) {    const w1 = JSON.parse(strArr[0])[0];    const w2 = JSON.parse(strArr[0])[1];    let weights = JSON.parse(strArr[1]);    for (let i = 0; i < weights.length; i++) {        if (w1 + weights[i] === w2 || w2 + weights[i] === w1) {                     return '' + weights[i]; // should return 5 and break out of function right?        }        //if this for loop is omitted the function returns 5        for (let j = i + 1; j < weights.length; j++) {            if (w1 + weights[i] + weights[j] === w2 ||                w2 + weights[i] + weights[j] === w1 ||                w1 + weights[i] === w2 + weights[j] ||                w2 + weights[i] === w1 + weights[j]) {                return '' + weights[i] + ',' + weights[j]; //this returns 1,6            }        }    }    return 'not possible';}// keep this function call here ScaleBalancing(["[6, 1]", "[1, 10, 6, 5]"]);
查看完整描述

1 回答

?
烙印99

TA贡献1829条经验 获得超13个赞

原因是外循环从0索引开始。在那一点上,代码不知道它5会在某个时间出现在数组中。


将第一个数字是1条件(w1 + weights[i] === w2 || w2 + weights[i] === w1)是false如此这般嵌套for循环。


如果你把5之前1的代码将返回5


function ScaleBalancing(strArr) {

    const w1 = JSON.parse(strArr[0])[0];

    const w2 = JSON.parse(strArr[0])[1];

    let weights = JSON.parse(strArr[1]);

    for (let i = 0; i < weights.length; i++) {

        if (w1 + weights[i] === w2 || w2 + weights[i] === w1) {         

            return '' + weights[i]; // should return 5 and break out of function right?

        }

        //if this for loop is omitted the function returns 5

        for (let j = i + 1; j < weights.length; j++) {

            if (w1 + weights[i] + weights[j] === w2 ||

                w2 + weights[i] + weights[j] === w1 ||

                w1 + weights[i] === w2 + weights[j] ||

                w2 + weights[i] === w1 + weights[j]) {

                return '' + weights[i] + ',' + weights[j]; //this returns 1,6

            }

        }

    }

    return 'not possible';

}

// keep this function call here 

console.log(ScaleBalancing(["[6, 1]", "[5, 10, 6, 1]"]));


查看完整回答
反对 回复 2021-06-18
  • 1 回答
  • 0 关注
  • 102 浏览
慕课专栏
更多

添加回答

举报

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