You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

10步城市往返行走代码问题排查:为何无法回到起点?

代码错误排查:10步行走返回起点逻辑问题

需求说明

按北(n)、南(s)、西(w)、东(e)四个方向行走,必须走满10步且最终返回起点,但测试时程序未正确判断是否回到起点,需排查代码问题。

待排查代码

function isValidWalk(walk) {
    let x = 0, y = 0;
    let result = 0;
    if(walk.length !== 10) {
        return false;
    }
    for (let i = 0; i < 10; i++) {
        if(walk[i] === 'n') {
            x += 1;
        }
        else if(walk[i] === 's') {
            x += -1
        }
        else if(walk[i] === 'w') {
            y += -1;
        }
        else if(walk[i] === 'e') {
            y += 1;
        }
    }
    result = x + y;

    if(result === 0) {
        return true;
    }
    return false;
}

错误分析

  • 核心逻辑错误:判断是否回到起点的条件错误。你用x + y === 0来判断,但回到起点需要x坐标和y坐标分别都为0(即原点(0,0)),而不是两者之和为0。
  • 反例验证:比如行走序列为['n','n','n','n','n','s','w','w','w','w'],此时x=5-1=4,y=-4,x+y=0,但实际位置在(4,-4),根本没回到起点,你的代码会错误返回true。

修正方案

把判断条件从result === 0改成x === 0 && y === 0,直接验证两个坐标是否都回到初始值0:

// 替换原有的判断逻辑
if(x === 0 && y === 0) {
    return true;
}
return false;

内容的提问来源于stack exchange,提问作者Andrey Smith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 13:57:28