在C/C++中应该避免使用递归调用函数吗?
我从事机器学习/数据挖掘工作,所以让我的代码可扩展性非常关键。
当我使用Java时,尽可能地避免使用递归调用,因为我经常会遇到调用栈溢出的情况。虽然有选项可以控制分配给调用堆栈的内存量,但我认为使程序依赖于更少的参数更为理想。因此,如果不使用递归调用,而是使用我自己管理的堆栈来实现清晰,我就这样做了。但是我不确定即使在Java中,这是否是正确的纪律。
据我所知,在C/C++中没有调用堆栈,所以我不必担心它会溢出。因此,我很好奇:我们应该尝试避免使用递归,还是鼓励使用,或者这是针对您的程序可扩展性的问题特定解决方案?
isEven
/isOdd
递归非常适合优化,可以完全消除不断增长的堆栈,因此如果适当,就没有普遍的理由要避免使用它们。 - Kerrek SB