迭代和递归的区别

看到有面经提到了这道题,之前简单想了下,拿二叉树前序遍历来说,迭代和递归本质上都用到了栈,只不过后者用的是进程栈,所以速度比较慢,因为这个栈中还要存返回地址、局部变量和寄存器等。

但是今天又反应了以下,二者的差别不仅仅是速度的问题,在C++中,迭代使用的栈是标准库提供的,是配接器,底层使用的是vector,而vector的数据是存在堆上的(通过标准库的allocator分配空间);而如果是递归,使用的是栈区,比堆小很多,如果递归次数过多,造成栈帧太多,很容易栈溢出。所以迭代能比递归进行更多的层数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值