算法与设计实验报告.doc

院 系: 计算机科学学院 专 业: 计算机科学学院 年 级: 2007 课程名称:算法设计与分析基础 学 号: 姓 名: 杜传虎 指导教师: 徐 科 2009年 11月 21日 年级 ?2007 班号 09 ?学号专业 计算机科学与技术 ?姓名 杜传虎 实验名称 ?计算n个非负整数Fibonacci数 实验 类型 设计型 综合型 创新型 实 验 目 的 或 要 求 1。设计一个交互式用户界面(例如,菜单)对用户的选择,如果可能的话,图形用户界面是最好的。 2。使用迭代算法来找出最大的n使得n个Fibonacci数不超过剂量为长。 3。据最大的子任务2 N的计算,计算的递归定义第n个Fibonacci数的算法,它是否可以在5分钟完成? 4。计算n的最大的计算机可以提供一个解决方案,在1,5,或10分钟的递归定义的算法,并通过迭代算法同样的事情。 5。什么是最小的n发生错误时? 6。矩阵计算的第n个Fibonacci数。 实 验 原 理 ( 算 法 流 程 ) #includeiostream #includecmath #includecmath #includetime.h #includestdlib.h using namespace std; int F(int pos) { int res; if(pos==0) return 0; else if(pos==1) return 1; res=F(pos-1)+F(pos-2); return res; } int Fib(int n) { if(n0) { exit(1); } if(n==0) return 0; else if(n==1) return 1; int res=0,a=0,b=1; for(int i=2;i=n;i++) { res=a+b; a=b; b=res; } return res; } int Fibo(int n) { int res; res=pow((1+sqrt(5.0))/2.0,n)/sqrt(5.0)-pow((1-sqrt(5.0))/2.0,n)/sqrt(5.0); res=(int)(res+0.5); return res; } int Fibona(int n) { int i,j; int A[2][2]={{0,1},{1,1}}; int B[2][2]={{0,1},{1,1}}; int C[2][2]; for(int k=1;k=n-1;k++) { C[0][0]=B[0][0]*A[0][0]+B[0][1]*A[1][0]; C[0][1]=B[0][0]*A[0][1]+B[0][1]*A[1][1]; C[1][0]=B[1][0]*A[0][0]+B[1][1]*A[1][0]; C[1][1]=B[1][0]*A[0][1]+B[1][1]*A[1][1]; for(i=0;i=1;i++) for(j=0;j=1;j++) B[i][j]=C[i][j],C[i][j]=0; } return B[0][1]; } void main() { int n,m,f,i; float j; char c; clock_t time1,time2; coutInput n:; cinn; again: coutInput m:; cinm; switch(m) { case 1: time1=clock(); for(i=1;i=100;i++) { f=F(n);} time2=clock(); j=(float)(time2-time1)/100; cout第n个斐波那契数是:fendl; cout开始时间:time1endl; cout结束时间:time2endl; cout所用时间:jendl; break; case 2: f=Fib

文档评论(0)

1亿VIP精品文档

相关文档