无论如何,不使用递归将导致您使用自己的“堆栈”来重写算法,该“堆栈”最终将在执行时受到类似的条件。
您可以根据算法的需要自定义堆栈大小,但是如果您查看WPF /
Silverlight和常规UI相关的算法,它们本质上都是递归的,并且每次单击,每次按键和每条通知都会经过许多递归方法。
查看创建具有自定义堆栈大小的线程,
尽管速度可能因算法和复杂性而异,但是创建单独的非递归算法会使任务变得更加复杂,因为您将自己使用列表,堆栈等来进行所有数据存储操作。
这是一个设计与性能的问题,如果您想要更好的性能,那么您的非递归算法将执行得更快,但是设计和实现这种算法将需要更长的时间。在其他地方,如果需要更快的解决方案,则可以编写执行速度较慢的递归算法,但是如果相差只有几毫秒或几微秒,则不值得这样做。



