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

FreeCodeCamp算牌挑战代码求助:两组测试用例未通过

问题分析与修复

你的代码未通过测试的核心原因是错误地将返回"Bet"/"Hold"的逻辑与当前卡牌类型绑定,而非依据count的正负值判断。FreeCodeCamp算牌挑战的规则是:

  • 当count > 0时,返回"[count] Bet"
  • 当count ≤ 0时,返回"[count] Hold"
    返回结果只和当前累计的count有关,和当前处理的卡牌类型无关。

测试用例失败原因

以未通过的两组测试为例:

  1. 卡牌序列2, J, 9, 2, 7
    处理到最后一张牌7时,count已累计为1(正),但你的代码因当前牌是7,直接返回"1 Hold",违反了count>0需返回Bet的规则。
  2. 卡牌序列2, 2, 10
    处理到最后一张牌10时,count累计为1(正),但你的代码因当前牌是10,直接返回"1 Hold",同样不符合规则。

修复后的代码

let count = 0;

function cc(card) {
  // 仅更新count值
  if (card >= 2 && card <= 6) {
    count += 1;
  } else if (card === 7 || card === 8 || card === 9) {
    // 7-9不改变count,无需操作
  } else if (card === 10 || card === 'J' || card === 'Q' || card === 'K' || card === 'A') {
    count -= 1;
  }

  // 根据count统一判断返回结果
  return count > 0 ? `${count} Bet` : `${count} Hold`;
}

// 测试调用
cc(2); cc(3); cc(7); cc('K'); cc('A');

修复说明

  1. 将更新count和返回结果的逻辑拆分:先处理卡牌对count的影响,再统一根据count的正负返回对应指令。
  2. 移除了原代码中每个卡牌分支内的return语句,确保count能被正确累计更新后再判断结果。
  3. 使用三元运算符简化了结果判断的逻辑,也可换成if-else写法,效果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 18:20:58