开发者社区 问答 正文

为什么快速排序不能用尾递归来实现

为什么快速排序不能用尾递归来实现

展开
收起
知与谁同 2018-07-18 11:26:02 1618 分享 版权
1 条回答
写回答
取消 提交回答
  • 胜天半子
      任何通过把大问题分成小问题一一解决,再将其结果一一拼接起来的算法,都是不可能实现尾递归的。因为解决每个小问题的时候,必须保存得到此小问题的过程中的所有分块信息(调用帧)。
      你可以把所有递归算法写成循环算法,但是任何无法实现尾递归的算法,将其写成循环之后,也必然需要一个与其递归版本调用帧堆栈结构相同的堆栈数据结构来保存其调用帧数据。
    2019-07-17 22:55:22
    赞同 展开评论
问答地址: