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

Code Wars猫咪堆叠总高度计算问题求助(含错误JS代码)

问题分析与解决方案

问题回顾

戴帽子的猫(The Cat In The Hat)的帽子下面有猫A,猫A的帽子下面有猫B,以此类推直到猫Z。
戴帽子的猫身高为2,000,000猫单位。
每只猫的身高是其帽子下面那只猫的2.5倍。
计算这些猫互相堆叠起来的总身高。
计数从戴帽子的猫开始。
n = 猫的数量
结果保留3位小数。

你的代码问题

你当前的代码逻辑完全偏离了问题本质:

  • 循环次数写死为2000000,和输入的猫数量n无关,完全错误
  • 每次累加n * a,没有体现每只猫身高的比例关系,完全不符合题目中“每只猫身高是下方猫的2.5倍”的规则

正确思路:等比数列求和

这是一个典型的等比数列求和问题:

  • 第1只猫(戴帽子的)身高:a₁ = 2000000
  • 第2只猫身高:a₂ = a₁ / 2.5(因为上方猫是下方猫的2.5倍,所以下方猫是上方的1/2.5)
  • 第k只猫身高:aₖ = a₁ / (2.5)^(k-1)
  • 公比r = 1/2.5 = 0.4

等比数列前n项求和公式:

Sₙ = a₁ * (1 - rⁿ) / (1 - r)

用公式计算比循环累加更高效,也避免了循环带来的精度或性能问题。

正确代码

function height(n) {
  if (n <= 0) return '0.000';
  const firstCatHeight = 2000000;
  const commonRatio = 1 / 2.5;
  const totalHeight = firstCatHeight * (1 - Math.pow(commonRatio, n)) / (1 - commonRatio);
  return totalHeight.toFixed(3);
}

验证示例

  • 当n=1时,返回2000000.000(只有戴帽子的猫)
  • 当n=2时,返回2800000.000(2000000 + 800000)
  • 当n=3时,返回3120000.000(2000000 + 800000 + 320000)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 10:12:24