定義:斐波那契數(shù)列(Fibonacci sequence),又稱黃金分割數(shù)列、因數(shù)學(xué)家列昂納多·斐波那契(Leonardoda Fibonacci)以兔子繁殖為例子而引入,故又稱為“兔子數(shù)列”,指的是這樣一個(gè)數(shù)列:1、1、2、3、5、8、13、21、34、……在數(shù)學(xué)上,斐波納契數(shù)列以如下被以遞推的方法定義:F(1)=1,F(xiàn)(2)=1, F(n)=F(n-1)+F(n-2)(n>=3,n∈N*)。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Fibonacci
{
class Program
{
static void Main(string[] args)
{
int ret1 = FibonacciSort(10);
int ret2 = FibonacciSort2(10);
Console.WriteLine("斐波那契數(shù)列,遞歸算法:{0}",ret1);
Console.WriteLine("斐波那契數(shù)列,普通算法:{0}", ret2);
}
/// <summary>
/// 斐波那契數(shù)列,遞歸算法
/// </summary>
/// <param name="num"></param>
public static int FibonacciSort(int num)
{
if (num <= 0)
{
return 0;
}else if (num > 0 && num < 3)
{
return 1;
}else
{
return FibonacciSort(num - 1) + FibonacciSort(num - 2);
}
}
/// <summary>
/// 斐波那契數(shù)列,普通算法
/// </summary>
/// <param name="num"></param>
/// <returns></returns>
public static int FibonacciSort2(int num)
{
if (num <= 0)
{
return 0;
}
else if (num > 0 && num < 3)
{
return 1;
}
int ret = 0;
int num1 = 1;
int num2 = 1;
for (int i = 0; i < num - 2; i++)
{
ret = num1 + num2;
num1 = num2;
num2 = ret;
}
return ret;
}
}
}
運(yùn)行結(jié)果:
image.png