正常的递归方法
public static int Foo(int i)
{
if (i <= 0)
return 0;
else if (i > 0 && i <= 2)
return 1;
else return Foo(i - 1) + Foo(i - 2);
}
自创型递归方法
ulong X1 = 1, X2 = 1;
private ulong CalculateValue(int n, ref ulong X1, ref ulong X2, bool isLoop)
{
if (isLoop)
{
X1 = 1;
X2 = 1;
}
switch (n)
{
case 0:
return 0;
case 1:
case 2:
return 1;
default:
ulong Result = 0;
Result = ( X1 + X2);
X1 = X2;
X2 = Result;
if (isLoop)
{
for (int i = 3; i <= n;i++ )
{
Result = CalculateValue(i, ref X1, ref X2, false);
}
}
return Result;
}
}
不知第二种是否算递归,但是两个方法在执行效率上可是差别太大了,随着层数越多第一种如同进入死循环;第二种方法却效率很高