【发布时间】:2011-09-29 09:41:54
【问题描述】:
我想编写一个程序,它获取一个整数 n 并打印 1,2,...,n 的所有排列。 我知道有一种递归方式可以做到这一点,而且我知道函数调用的开销。 有没有什么办法不用递归来做到这一点??
【问题讨论】:
-
如果你计算一些东西并打印即时结果,你永远不需要担心开销:打印本身很慢,当结果更多时你不想这样做比说,1000 行。但对于如此无害的数据量,性能根本不重要。
-
@leftaroundabout:不仅仅是性能开销。问题可能在于输入非常大,在具有小堆栈的系统上会有太多递归
-
@sehe:好的,我应该让这个声明不那么笼统。 在这种特定情况下,堆栈大小无关紧要,因为排列的递归计算(假设通常的算法)在时间上是
O(n!),但在递归深度上只有O(n)。因此,如果您将n设为非常大(大到足以成为堆栈问题),那么程序将永远无法完成。
标签: c++ recursion permutation