今天通过Fibonacci数列的实现方式来说明一下C语言中迭代和递归的效
率问题。首先来看斐波那契函数 的定义,
Fibonacci(n)={1;n<=2;
Fibonacci(n-1)+Fibonacci(n-2);n>2;
递归算法如下:
Fibonacci(int n)
{
if(n<=2)
return 1;
return Fibonacci(n-1)+Fibonacci(n-1);
}
每个递归调用都将触发另外两个递归函数,接下去的调用还是如此,每
次调用都将计算一次,例如在计算Fibonacci(10)时,Fibonacci(3)将被计算21
次。结果将压入堆栈中,直到递归到达“底部”才开始释放内存。
迭代法算法如下:
Fibonacci()
{
long result,previous,next;
result=previous=1;
while(n>2)
{
n-=1;
next=previous;
previous=result;
result=previous+next;
}
return result;
}
}
}
参考资料:c与指针