您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 企业财务 > c++,使用欧几里得算法计算两个数的最大公约数,分别用递推和递归两种算法实现5
实验九一、实验内容教材3.9定义递归函数实现下面的Ackman函数n+1m=0Acm(m,n)=Acm(m-1,1)n=0Acm(m-1,Acm(m,n-1))n0,m0教材3.10用递归法实现勒让德多项式:1n=0Pn=xn=1((2n-1)xPn-1(x)-(n-1)Pn-2(x))/n教程p24使用欧几里得算法计算两个数的最大公约数,分别用递推和递归两种算法实现教程p26编程:将上题以多文件方式组织,在area.h中声明各个area()函数原型,在area.cpp文件中定义函数,然后在Exp9_2中包含area.h,定义main()函数并执行。二、实验目的1、掌握函数的嵌套调用好递归调用2、掌握递归算法3、了解内联函数、重载函数、带默认参函数的定义及使用方法4、掌握程序的多文件组织5、掌握编译预处理的内容,理解带参数宏定义与函数的区别三、实验步骤教材3.9定义递归函数实现下面的Ackman函数n+1m=0Acm(m,n)=Acm(m-1,1)n=0Acm(m-1,Acm(m,n-1))n0,m0教材3.10用递归法实现勒让德多项式:1n=0Pn=xn=1((2n-1)xPn-1(x)-(n-1)Pn-2(x))/n教程p24使用欧几里得算法计算两个数的最大公约数,分别用递推和递归两种算法实现教程p26编程:将上题以多文件方式组织,在area.h中声明各个area()函数原型,在area.cpp文件中定义函数,然后在Exp9_2中包含area.h,定义main()函数并执行。四、实验数据及处理结果教材3.9#includeiostreamusingnamespacestd;intAcm(intm,intn){if(m==0)returnn+1;else{if(n==0)returnAcm(m-1,1);elsereturnAcm(m-1,Acm(m,n-1));}intmain(){inta,b;coutpleaseimputtwonumbers:endl;cinab;coutAcm(a,b)=Acm(a,b)endl;return0;}教材3.10#includeiostreamusingnamespacestd;doubleP(intn,doublex){if(n==0)return1;if(n==1)returnx;return((2*n-1)*x*P(n-1,x)-(n-1)*P(n-2,x))/n;}intmain(){coutP(4,1.5)=P(4,1.5)endl;return0;}教程p24实验八(2)递推法#includeiostreamusingnamespacestd;intmax(intx,inty){return(x=y?x:y);}intmin(inta,intb){return(a=b?a:b);}intmain(){inta,b,c,d,n;coutPleaseimputtownumbersendl;cinab;c=max(a,b);d=min(a,b);n=c%d;while(n!=0){c=d;d=n;n=c%d;}cout最大公约数是dendl;return0;}递归法:#includeiostreamusingnamespacestd;intfun(intx,inty){if(x%y==0)returny;elsereturnfun(y,x%y);}intmain(){intm,n,t,r;coutpleaseimputtwonumbersendl;cinmn;if(mn){t=m;m=n;n=t;}r=fun(m,n);cout最大公约数是:rendl;return0;}教材p26area.hdoublearea(doubleradius=0);doublearea(doublea,doubleb);doublearea(doublea,doubleb,doubleh);doublearea(doublea,doubleb,doublec,int);area.cpp#includecmath#definePI3.14159doublearea(doubleradius){returnPI*radius*radius;}doublearea(doublea,doubleb){returna*b;}doublearea(doublea,doubleb,doubleh){return(0.5*(a+b)*h);}doublearea(doublea,doubleb,doublec,int){doubles=0.5*(a+b+c);returnsqrt(s*(s-a)*(s-b)*(s-c));}exp9_2.cpp#includeiostream#includecmath#includearea.husingnamespacestd;#definePI3.14159intmain(){coutAreaofpointisarea()'\n';coutAreaofsquareisarea(1,1)'\n';coutAreaoftrapeziumisarea(1,0.5,1)'\n';coutAreaoftriangleisarea(1,sqrt(1+0.5*0.5),sqrt(1+0.5*0.5),0)'\n';return0;}五、思考讨论题或体会或对改进实验的建议感觉对多文件运行结构不是很透彻,运用多文件方式与不运用是否有什么区别?
本文标题:c++,使用欧几里得算法计算两个数的最大公约数,分别用递推和递归两种算法实现5
链接地址:https://www.777doc.com/doc-6184916 .html