SoloLearn蜗牛爬井项目代码问题:输入42失败如何修改?
解决SoloLearn JavaScript「蜗牛爬井」项目的代码问题
你的代码存在两个关键问题,导致无法适配所有测试用例:
- 语法错误:for循环未用大括号包裹循环体,且存在多余的闭合大括号。原代码中只有
i+=5会被重复执行,count++仅运行一次,完全不符合计数逻辑。 - 逻辑错误:没有遵循「蜗牛爬井」的核心规则——蜗牛白天向上爬5单位,夜晚会下滑2单位(最后一天爬出井口后不会下滑)。原代码只计算了直接除以5的次数,忽略了夜晚下滑的情况。
修正后的代码(循环模拟版)
function main() { var depth = parseInt(readLine(), 10); let count = 0; let currentPosition = 0; while (true) { count++; // 模拟白天爬升 currentPosition += 5; // 检查是否已爬出井口 if (currentPosition >= depth) { break; } // 模拟夜晚下滑 currentPosition -= 2; } console.log(count); }
修正后的代码(数学公式版,更高效)
function main() { var depth = parseInt(readLine(), 10); if (depth <= 5) { console.log(1); return; } // 最后一天爬5直接出去,前面每天净爬3 const days = Math.ceil((depth - 5) / 3) + 1; console.log(days); }
验证测试用例
- 输入42:(42-5)=37,37除以3向上取整为13,加1得14天。第14天白天爬5后位置达44≥42,符合规则。
- 输入128:(128-5)=123,123除以3得41,加1得42天。第42天白天爬5刚好到达128,符合规则。
内容的提问来源于stack exchange,提问作者azizmech
相关产品推荐
相关产品推荐

