2025-11-20 05:58:12
递归就像叠纸杯一样,每层调用都往栈里压一个 cup。如果叠太高了,栈里的 cup 就堆不下,直接爆了。比如你写个无限循环的递归函数,每次调用都压一个 cup,栈空间被占满就撑爆了。
栈里每层存三样东西:返回地址、函数参数、局部变量。比如算阶乘的递归,每次调用都压一个 cup,占 8 字节。如果递归到 1000 层,总共占 8000 字节。Windows 默认栈空间才 1MB(约 1 million 字节),1000 层才占 0.8%,但要是递归到 5000 层,就要 40KB,撑爆了系统就会崩溃。比如 Python 的 default recursion depth 是 1000,超过就报错。栈像个电梯,每层只能停一次,停太高了电梯就卡住。上次有人用递归算 1万层斐波那契数列,直接栈溢出,电脑黑屏了。
本题链接: