实验小结 吴新强于2013年3月09日21:32:07 桂电 2507实验室
// 斐波那契数列的递归和动态规划法实现方法
//
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.IO;
namespace Fibonacci
{
class Program
{
static void Main(string[] args)
{
Program p = new Program();
Timing tObj = new Timing();
Timing tObj1 = new Timing();
int num = 40;
long fibNumber;
tObj.StartTime();
fibNumber = recurFib(num);
tObj.StopTime();
Console.WriteLine("斐波那契数列表达式:F(n)=F(n-1)+F(n-2)!");
Console.WriteLine("请输入要计算的数: " + num);//Calculating Fibonacci number
Console.WriteLine("F(" + num + ")" + "=" + fibNumber + " \n 消耗时间: " + tObj.Result().TotalMilliseconds);
p.Clear();
tObj1.StartTime();
fibNumber = iterFib(num);
tObj1.StopTime();
Console.WriteLine("F(" + num + ")" + "=" + fibNumber + " \n 消耗时间: " + tObj1.Result().TotalMilliseconds);
}
// 递归方法实现斐波那契
static long recurFib(int n)
{
if (n < 2)
return n;
else
return recurFib(n - 1) + recurFib(n - 2);
}
// 动态规划法实现斐波那契数列
static long iterFib(int n)
{
int[] val = new int[n];
if ((n == 1) || (n == 2))
return 1;
else
{
val[1] = 1;
val[2] = 2;
for (int i = 3; i <= n - 1; i++)
val[i] = val[i - 1] + val[i - 2];
}
return val[n - 1];
}
private int[] array;
private int upper;
private int numElements;
public void Clear()// 删除数据
{
for (int i = 0; i < upper; i++)
{
array[i] = 0;
numElements = 0;
}
}
}
public class Timing // 时间测试类
{
TimeSpan duration;
public Timing()
{
duration = new TimeSpan(0);
}
public void StopTime()
{
duration = Process.GetCurrentProcess().TotalProcessorTime;
}
public void StartTime()
{
GC.Collect();
GC.WaitForPendingFinalizers();
}
public TimeSpan Result()
{
return duration;
}
}
// 斐波那契数列的递归和动态规划法实现方法
//
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.IO;
namespace Fibonacci
{
class Program
{
static void Main(string[] args)
{
Program p = new Program();
Timing tObj = new Timing();
Timing tObj1 = new Timing();
int num = 40;
long fibNumber;
tObj.StartTime();
fibNumber = recurFib(num);
tObj.StopTime();
Console.WriteLine("斐波那契数列表达式:F(n)=F(n-1)+F(n-2)!");
Console.WriteLine("请输入要计算的数: " + num);//Calculating Fibonacci number
Console.WriteLine("F(" + num + ")" + "=" + fibNumber + " \n 消耗时间: " + tObj.Result().TotalMilliseconds);
p.Clear();
tObj1.StartTime();
fibNumber = iterFib(num);
tObj1.StopTime();
Console.WriteLine("F(" + num + ")" + "=" + fibNumber + " \n 消耗时间: " + tObj1.Result().TotalMilliseconds);
}
// 递归方法实现斐波那契
static long recurFib(int n)
{
if (n < 2)
return n;
else
return recurFib(n - 1) + recurFib(n - 2);
}
// 动态规划法实现斐波那契数列
static long iterFib(int n)
{
int[] val = new int[n];
if ((n == 1) || (n == 2))
return 1;
else
{
val[1] = 1;
val[2] = 2;
for (int i = 3; i <= n - 1; i++)
val[i] = val[i - 1] + val[i - 2];
}
return val[n - 1];
}
private int[] array;
private int upper;
private int numElements;
public void Clear()// 删除数据
{
for (int i = 0; i < upper; i++)
{
array[i] = 0;
numElements = 0;
}
}
}
public class Timing // 时间测试类
{
TimeSpan duration;
public Timing()
{
duration = new TimeSpan(0);
}
public void StopTime()
{
duration = Process.GetCurrentProcess().TotalProcessorTime;
}
public void StartTime()
{
GC.Collect();
GC.WaitForPendingFinalizers();
}
public TimeSpan Result()
{
return duration;
}
}
}
实验截图: