资源描述
班级 学号 姓名 实验组别 试验日期 室温 报告日期 成绩 报告内容:(目的和要求、原理、步骤、数据、计算、小结等)实验名称:菲波那契数列的实现算法及分析实验目的:1. 掌握分别用递归和非递归方法计算菲波那契(Fibonacci)数列。2. 掌握算法性能测试的方法,并能进行算法分析和比较。实验环境(硬/软件要求):Windows 2000, Visual C+ 6.0实验内容:二阶Fibonacci数列的定义如下:F0=1,F1=1,F2=2,F3=3,F4=5,Fi=Fi-1+Fi-2(i=1)。试用递归和非递归两种方法计算Fn的函数。实验要求:1. 完成计算Fn的递归函数Fib rec。2. 完成计算Fn的非递归函数Fib ite。3. 当N=10,15,20,25,30,35,40,45时测试以上两种算法的执行时间,并把测试结果填写在附表1-1中。 N 函数101520253035404589987109461213931346269149303521655801411836311903Fib rec运行时间00016110121913593151781Fib ite运行时间00000000注:表格中填写的是测试时间,单位m。试解释两种算法在执行时间上的不同,并对两种算法进行分析。#include#include /*调用时间函数数据库*/long Fib_rec(int n) /*定义递归函数*/if(n=0|n=1) /*判断是否为第一二个数*/return(1); /*返回结果*/else return(Fib_rec(n-1)+Fib_rec(n-2); /*返回递归函数结果*/long Fib_ite(int n) /*定义非递归函数*/long fib1,fib2,fib; /*定义变量*/int i;fib1=1;fib2=1;for(i=2;i=n;i+) /*循环*/fib=fib1+fib2;fib1=fib2;fib2=fib;return fib; /*返回结果*/void main() /*主函数*/clock_t us1,us2; /*定义变量*/int n;printf(请输入n:n); /*输出*/scanf(%d,&n); /*输入*/us1=clock(); /*初始时间*/printf(递归函数计算结果:%ldn,Fib_rec(n); /*输出结果*/us2=clock(); /*终止时间*/printf(递归函数执行时间:%ld毫秒n,us2-us1); /*输出运行时间*/us1=clock();printf(非递归函数计算结果:%ldn,Fib_ite(n);us2=clock();printf(非递归函数执行时间:%ld毫秒n,us2-us1);
展开阅读全文