抱歉,我无法从这里得到其他相关问题的确切答案。一般情况下,如果我们事先不知道问题可能需要多少次迭代或重复。在大多数情况下,这将是一个更好的解决方案,为什么?
答案 0 :(得分:0)
我认为这个决定取决于问题本身。如果我不知道算法的迭代次数,当我觉得问题的本质帮助我这样做时,我会使用递归算法。
例如,如果我想计算给定集合中所有可能的非空子集,我会使用递归算法,如果我想计算元素列表的总和,我会使用迭代算法。
在这两种情况下,我都可以使用其他方法来解决问题,但我觉得这种编码更加舒适。
答案 1 :(得分:0)
在不提供尾部调用消除的编程语言中,出于性能原因,通常应该优先考虑迭代迭代。但是,仍然存在一些递归解决方案更直观且更容易输入的情况。例如,解决本质上递归的问题(使用树,回溯等)。一般来说,您应该选择两个选项中最易读的解决方案,并且当性能很重要时,使用更快的一个,即迭代。重要的是要注意某些语言不提供循环功能,如Haskell。但是,Haskell有尾调用消除,所以当你想要一个循环时,你可以编写一个尾递归算法,它将由编译器转换成循环。因此,递归并不总是像某些人想的那样慢于迭代。