//循环(效率高)
int fib(int n)
{
int a = 1;
int b = 1;
int c = 1;
while(n-->2)
{
c = a+b;
a = b;
b = c;
}
return c;
}
//递归(效率低)
int fib(int n)
{
if(n<=2)
return 1;
else
return fib(n-1)+fib(n-2);
}
递归函数调用将涉及一些运行时开销----参数必须压到堆栈,
为局部变量分配内存空间(所有的递归都这样,并非这个例子),
寄存器的值必须保存等当递归函数返回的时候,上述这些操作必须还原,
恢复成原来的样子。