斐波那契额数列 实 验 报 告
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
us2=clock(); /*终止时间*/
printf("递归函数执行时间:%ld毫秒\n",us2-us1); /*输出运行时间*/
us1=clock();
printf("非递归函数计算结果:%ld\n",Fib_ite(n));
us2=clock();
printf("非递归函数执行时间:%ld毫秒\n",us2-us1);
班级学号姓名实验组别
试验日期室温报告日期成绩
报告内容:(目的和要求、原理、步骤、数据、计算、小结等)
实验名称:菲波那契数列的实现算法及分析
实验目的:
1.掌握分别用递归和非递归方法计算菲波那契(Fibonacci)数列。
2.掌握算法性能测试的方法,并能进行算法分析和比较。
实验环境(硬/软件要求):
Windows 2000, Visual C++ 6.0
}
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("递归函数计算结果:%ld\n",Fib_rec(n)); /*输出结果*/
}
N
函数
10
15
20
25
30
35
40
45
89
987
10946
121393
1346269
14930352
165580141
1836311903
Fibrec运行时间
0
0
0
16
110
1219
13593
151781
Fib ite运行时间
0
0
0
0
0
0
0ห้องสมุดไป่ตู้
0
注:表格中填写的是测试时间,单位μm。
试解释两种算法在执行时间上的不同,并对两种算法进行分析。#include<stdio.h>
#include<time.h> /*调用时间函数数据库*/
long Fib_rec(int n) /*定义递归函数*/
{
if(n==0||n==1) /*判断是否为第一二个数*/
return(1); /*返回结果*/
else return(Fib_rec(n-1)+Fib_rec(n-2)); /*返回递归函数结果*/
实验内容:
二阶Fibonacci数列的定义如下:F0=1,F1=1,F2=2,F3=3,F4=5,…,Fi=Fi-1+Fi-2(i>=1)。试用递归和非递归两种方法计算Fn的函数。
实验要求:
1.完成计算Fn的递归函数Fibrec。
2.完成计算Fn的非递归函数Fibite。
3.当N=10,15,20,25,30,35,40,45时测试以上两种算法的执行时间,并把测试结果填写在附表1-1中。
printf("递归函数执行时间:%ld毫秒\n",us2-us1); /*输出运行时间*/
us1=clock();
printf("非递归函数计算结果:%ld\n",Fib_ite(n));
us2=clock();
printf("非递归函数执行时间:%ld毫秒\n",us2-us1);
班级学号姓名实验组别
试验日期室温报告日期成绩
报告内容:(目的和要求、原理、步骤、数据、计算、小结等)
实验名称:菲波那契数列的实现算法及分析
实验目的:
1.掌握分别用递归和非递归方法计算菲波那契(Fibonacci)数列。
2.掌握算法性能测试的方法,并能进行算法分析和比较。
实验环境(硬/软件要求):
Windows 2000, Visual C++ 6.0
}
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("递归函数计算结果:%ld\n",Fib_rec(n)); /*输出结果*/
}
N
函数
10
15
20
25
30
35
40
45
89
987
10946
121393
1346269
14930352
165580141
1836311903
Fibrec运行时间
0
0
0
16
110
1219
13593
151781
Fib ite运行时间
0
0
0
0
0
0
0ห้องสมุดไป่ตู้
0
注:表格中填写的是测试时间,单位μm。
试解释两种算法在执行时间上的不同,并对两种算法进行分析。#include<stdio.h>
#include<time.h> /*调用时间函数数据库*/
long Fib_rec(int n) /*定义递归函数*/
{
if(n==0||n==1) /*判断是否为第一二个数*/
return(1); /*返回结果*/
else return(Fib_rec(n-1)+Fib_rec(n-2)); /*返回递归函数结果*/
实验内容:
二阶Fibonacci数列的定义如下:F0=1,F1=1,F2=2,F3=3,F4=5,…,Fi=Fi-1+Fi-2(i>=1)。试用递归和非递归两种方法计算Fn的函数。
实验要求:
1.完成计算Fn的递归函数Fibrec。
2.完成计算Fn的非递归函数Fibite。
3.当N=10,15,20,25,30,35,40,45时测试以上两种算法的执行时间,并把测试结果填写在附表1-1中。