您的位置:首页 > 其它

斐波那契数列迭代和递归对比

2013-01-11 15:22 423 查看
斐波那契数列迭代方法和递归算法对比

1.递归算法

int recursion(int n)
{
if (n < 2)
return n;
else
{
return recursion(n - 1) + recursion(n - 2);
}
}


2.递归算法(静态方法)

static int recursionS(int n)
{
if (n < 2)
return n;
else
{
return recursionS(n - 1) + recursionS(n - 2);
}
}


3.迭代算法

int Iteration(int n)
{
int a1, a2, a3;
if (n < 2)
return n;
a1 = a2 = a3 = 1;
while (n > 2)
{
n--;
a3 = a1 + a2;
a1 = a2;
a2 = a3;

}
return a3;
}


4.调用

Stopwatch sw1 = new Stopwatch();
sw1.Start();
int i = Iteration(40);
sw1.Stop();
Response.Write(string.Format("{1}迭代時間:{0}<br/>", sw1.Elapsed, i));
Stopwatch sw = new Stopwatch();
sw.Start();
int r=  recursion(40);
sw.Stop();
Response.Write(string.Format("{1}遞歸時間:{0}", sw.Elapsed, r));
Response.Write("<br/>");
Stopwatch sw2 = new Stopwatch();
sw2.Start();
int r1 = recursionS(40);
sw2.Stop();
Response.Write(string.Format("{1}遞歸時間(靜態):{0}", sw2.Elapsed, r1));
Response.Write("<br/>");


5.结果

102334155迭代時間:00:00:00.0001703
102334155遞歸時間:00:00:06.5017408
102334155遞歸時間(靜態):00:00:06.2556308
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: