斐波那契数列迭代方法和递归算法对比
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}", 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(""); Stopwatch sw2 = new Stopwatch(); sw2.Start(); int r1 = recursionS(40); sw2.Stop(); Response.Write(string.Format("{1}遞歸時間(靜態):{0}", sw2.Elapsed, r1)); Response.Write("");
5.结果
102334155迭代時間:00:00:00.0001703
102334155遞歸時間:00:00:06.5017408102334155遞歸時間(靜態):00:00:06.2556308