//斐波那契 三种方法:
int x = Fib_1(6);
int y = Fib_2(7);
int z = Fib_3(8);
方法实现:
#region 斐波那契计算 递推公式:F(n)=F(n-1)+F(n-2)
/// <summary>
///递归方式 性能不好 1、1、2、3、5、8、13、21、34、……,这个数列从第3项开始,每一项都等于前两项之和。求第n个数是几
/// </summary>
/// <param name="n">第n个数,下标从1开始</param>
/// <returns></returns>
static int Fib_1(int n)
{
if (n <= 0)
return 0;
else if (n >= 1 && n <= 2)
return 1;
else
return Fib_1(n - 1) + Fib_1(n - 2);
}
/// <summary>
/// 数组方式 性能高于上面的递归
/// </summary>
/// <param name="n"></param>
/// <returns></returns>
static int Fib_2(int n)
{
if (n <= 0)
{
return 0;
}
else if (n >= 1 && n <= 2)
{
return 1;
}
else
{
int[] arr = new int[n];
arr[0] = 1;
arr[1] = 1;
for (int i = 2; i < n; i++)
{
arr[i] = arr[i - 1] + arr[i - 2];
}
return arr[n - 1];
}
}
/// <summary>
/// 循环方式 性能高于上面的数组
/// </summary>
/// <param name="n"></param>
/// <returns></returns>
static int Fib_3(int n)
{
int result = 0;
int last = 1;
int lastnext = 1;
for (int x = 2; x < n; x++)
{
result = last + lastnext;
lastnext = last;
last = result;
}
return result;
}
#endregion