豆包MarsCode AI刷题101兔群

103 阅读3分钟

书接上回

只说了简单的说了,我通过豆包MarsCode AI的帮助,最终把题目做出来的事情,这次说说过程,和我自己的感悟。

进入刷题界面,直奔豆包MarsCode AI

image.png

下面是豆包MarsCode AI给我的代码(以下直接简称AI)

def solution(A: int) -> int:
    # 初始化前两个月的兔子对数
    if A == 1:
        return 1
    if A == 2:
        return 1
    
    # 使用列表存储每个月的兔子对数
    rabbits = [0] * (A + 1)
    rabbits[1] = 1
    rabbits[2] = 1
    
    # 从第3个月开始计算每个月的兔子对数
    for i in range(3, A + 1):
        rabbits[i] = rabbits[i - 1] + rabbits[i - 2]
    
    # 返回第A个月的兔子对数
    return rabbits[A]

if __name__ == "__main__":
    # 测试用例
    print(solution(1) == 1)
    print(solution(5) == 8)
    print(solution(15) == 987)

这里给的是思路

关键步骤解释

  1. 初始化前两个月的兔子对数

    • 如果 A 是1或2,直接返回1。
  2. 使用列表存储每个月的兔子对数

    • 创建一个长度为 A + 1 的列表 rabbits,并初始化前两个月的值为1。
  3. 从第3个月开始计算每个月的兔子对数

    • 使用循环从第3个月开始,每个月的兔子对数等于前两个月的兔子对数之和。
  4. 返回第A个月的兔子对数

    • 返回列表中第A个月的值。

你可以根据这个框架继续完善代码,或者根据需要进行调整。

运行之后返回

image.png

可以看到第一个测试正确,前两个错误,一定是函数执行逻辑出了问题
现在我们直接把报错返给AI,看看他会做出怎样的改变

image.png 从命令行输出可以看出,测试用例的结果是 TrueFalseFalse,这意味着代码在某些情况下没有返回正确的结果。我们需要检查代码的逻辑并进行修正。

问题分析

  1. 初始化前两个月的兔子对数

    • 代码中已经正确初始化了前两个月的兔子对数。
  2. 使用列表存储每个月的兔子对数

    • 代码中使用了列表 rabbits 来存储每个月的兔子对数。
  3. 从第3个月开始计算每个月的兔子对数

    • 代码中使用了循环从第3个月开始计算每个月的兔子对数。
  4. 返回第A个月的兔子对数

    • 代码中返回了列表中第A个月的值。

问题排查

  1. 测试用例结果

    • solution(1) == 1 返回 True,说明第一个测试用例是正确的。
    • solution(5) == 8 返回 False,说明第二个测试用例是错误的。
    • solution(15) == 987 返回 False,说明第三个测试用例是错误的。

修正代码

我们需要检查代码的逻辑,确保每个月的兔子对数计算正确。

修正后的代码

以下是修正后的代码

def solution(A: int) -> int:
    # 初始化前两个月的兔子对数
    if A == 1:
        return 1
    if A == 2:
        return 1
    
    # 使用列表存储每个月的兔子对数
    rabbits = [0] * (A + 1)
    rabbits[1] = 1
    rabbits[2] = 1
    
    # 从第3个月开始计算每个月的兔子对数
    for i in range(3, A + 1):
        rabbits[i] = rabbits[i - 1] + rabbits[i - 2]
    
    # 返回第A个月的兔子对数
    return rabbits[A]

if __name__ == "__main__":
    # 测试用例
    print(solution(1) == 1)
    print(solution(5) == 8)
    print(solution(15) == 987)

进去编辑还是

image.png 可以看到,还是不行滴,和之前的结果没变 那我们换种思路,看看ta给的提示写出来之前那篇代码。