我在接受采访时被问及解决问题检查pallindrome的有效方法。
现在我可以做两件事:
第二个是递归的。我的问题是算法的递归和非递归版本的空间复杂度有什么不同?
答案 0 :(得分:9)
阅读
基本上,递归算法会增加开销,因为您在执行堆栈中存储递归调用。
但是如果递归函数是调用的最后一行(尾递归),则没有额外的惩罚。
当然,两种算法都是相同的。
答案 1 :(得分:1)
理论上它们具有相同的空间复杂性;这在很大程度上取决于是否可以优化tail recursion。
如果是这样,堆栈会在每次递归时被替换,因此不会受到惩罚。