1. 栈结构
利用栈来人工模拟系统堆栈的操作过程,其实这种方法本质上还是递归,只不过本来计算机帮你完成的事由你自己做了,所以这对算法的优化效果不明显。
2. 尾递归消除法
如果递归函数是尾递归(在函数末尾递归调用本函数的方式,且递归调用语句只有一个),就可以很容易的将递归消除,用推导出来的数学公式代替。 其效率与循环的代码执行效率基本上是相当的。其优化主要是对栈内空间的优化,这个优化是O(n)到O(1)的;至于时间的优化,其实是由于对空间的优化导致内存分配的工作减少所产生的,并不会带来质的飞跃。下面是尾递归的形式:
int function(int n){
if(n==0)
return 1