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

Python turtle递归绘图报Maximum recursion depth exceeded错误求解

递归报错原因及修复方案
  • 核心错误原因:递归函数未设置正确的终止逻辑
    你写的两个递归函数中,hexagon(n-1)、square(n-1)的调用写在了if n>=1判断的外部,不管n是否满足大于等于1的条件,函数都会持续调用自身,n会不断递减为负数、无限递归下去,直到超过Python默认的最大递归深度限制(默认约1000层),触发Maximum recursion depth exceeded in comparison报错。
  • 为什么分开运行时看似正常
    Python默认递归深度为1000层,你单独调用hexagon(100)时,从n=100到n=-899才会触达递归深度上限,而绘图逻辑仅在n>=1时执行,100层递归就已经完成了所有绘图操作,后续的无效递归你没有感知到,误以为程序正常执行结束,实际上等待足够长时间后,单独运行也会抛出同样的报错。两个函数串联运行时,前一个函数已经消耗了部分递归深度,后一个函数运行时更快触达上限,所以立刻报错。

修复方案

将递归调用挪到if n>=1的分支内部,当n<1时函数直接终止,不再递归,修复后可正常运行的代码如下:

import turtle
t = turtle.Turtle()

def hexagon(n):
    if n>=1:
        t.forward(n)
        t.left(60)
        hexagon(n-1) # 递归调用放在if分支内,n<1时自动终止

hexagon(100)
turtle.clearscreen()

def square(n):
    if n>=1:
        t.forward(n*5)
        t.right(90)
        square(n-1) # 递归调用放在if分支内,n<1时自动终止

square(50)
turtle.done()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 04:06:04