简单说,是递归的另一种表现形式。
不会出现爆栈的风险,
一般线性fibonacci函数:
int fibonacci(int n)
{
if(n <2)
{
return 0;
}
else
{
return fibonacci(n - 2) + fibonacci(n - 1);
}
}
尾递归:
int fibonacci(int n1,int n2,int n3)
{
if(n1 <= 2)
return n1;
return fibonacci(n - 1,n3,n2 + n3);
}
n1:循环次数
n2:当前结果值
n3:下一个结果值