礼品代发网

礼品代发网

收录130107113题,礼品代发网免费搜题解答

今日已更新0道题

递归为什么导致栈溢出-递归效率不高,递归层次过多会导致栈溢出

2025-11-20 06:25:54  

递归为什么导致栈溢出-递归效率不高,递归层次过多会导致栈溢出

优质解答

递归就像自己给自己下任务,每次调用都往内存里存个步骤。存得越多,内存就占得越多,存不下的时候就会爆掉。比如算阶乘,每次都重新乘,不像是循环那样直接算到底。层次多了就像叠积木,叠到100层就压垮了堆栈,这时候程序就死机了。

为什么叠积木会压垮堆栈呢?因为每次调用都像在纸片上画个标记,这些标记要按顺序存起来。比如算阶乘n=10000,递归需要存10000个标记,每个标记占8字节,总共要存80000字节。而循环只需要存初始值和计数器,大概就几百字节。实测数据显示,当递归深度超过1024时,栈空间就会耗尽。比如Python默认栈深1000,调用1001次就会报错。再比如斐波那契数列,递归调用次数是2^n次,而循环只需要n次。当n=20时,递归就要算1048576次,内存根本扛不住。所以层次多的时候,就像往玻璃杯里倒水,水多到溢出来就摔碎了程序。

本题链接:

递归栈溢出效率低