全站数据
8 4 2 0 5 8 1

如何避免递归函数堆栈溢出

英语末班车 | 简单学习,快乐成才!         
问题更新日期:2024-10-13 08:47:04

问题描述

如何避免递归函数堆栈溢出急求答案,帮忙回答下
精选答案
最佳答案

虽然我没有亲眼见到你的源程序代码,但是根据你所描述的情况来看,我估计你在你的程序源代码中使用了递归调用子函数。因为程序在频繁地递归调用子函数过程中就会产生频繁地产生压栈、出栈操作。

递归调用子函数的最大优点就是:程序的编写起来较容易、并且程序的可读性较好;但是它也有它的缺点。即:如果需要处理的数据量很大时,就必然会导致堆栈溢出的现象。此时就必须将递归算法修改为非递归的算法。

至于具体的修改方法,现在的数据结构教材上都有讲解的。但是这样一改,其程序的非递归可读性必然不如递归调用的看起来可读性要好。

例如:最最经典的递归调用子函数就是:计算一个整数的阶乘。当需要计算的整数比较小的时候,那么使用递归调用子函数来编写程序,那简直就是一种享受。但是当需要计算的整数很大、很大的时候,那么如果还是使用递归算法,必然会造成堆栈的溢出。此时就必须要把递归算法修改为非递归算法。