算法设计经典代码.doc

算法设计经典代码.doc

ID:59136507

大小:22.00 KB

页数:3页

时间:2020-09-12

算法设计经典代码.doc_第1页
算法设计经典代码.doc_第2页
算法设计经典代码.doc_第3页
资源描述:

《算法设计经典代码.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、4-1阶乘的倒数和阶乘n!定义:n!=1(n=1);n!=n*(n-1)!(n>1)设计求n!的递归函数,调用该函数求递归描述#includelongf(intn){longg;if(n==1)g=1;elseg=n*f(n-1);return(g);}voidmain(){intk,n;doubles=1;printf("请输入n:");scanf("%d",&n);for(k=1;k<=n;k++)s+=(double)1/f(k);printf("s=%f",s);}4-3递归求解b数列已知b数列定义:建立b

2、数列的递归函数,求b数列的第n(n≤30)项与前n项之和。解:#includelongb(intn){longg;if(n==1)g=1;elseif(n==2)g=2;elseg=3*b(n-1)-2*b(n-2);returng;}voidmain(){intk,n;longs=0;printf("请输入n:");scanf("%d",&n);for(k=1;k<=n;k++)s+=b(k);printf("b(%d)=%ld",n,b(n));printf("s=%ld",s);}4-4递归求解双递推摆动

3、数列已知递推数列:a(1)=1,a(2i)=a(i)+1,a(2i+1)=a(i)+a(i+1),(i为正整数)试建立递归,求该数列的第n(n<)项与前n项的和。//摆动数列#includeinta(intn){intg;if(n==1)g=1;elseif(n%2==0)g=a(n/2)+1;elseg=a((n-1)/2)+a((n+1)/2);returng;}voidmain(){intk,n;longs=0;printf("请输入n:");scanf("%d",&n);for(k=1;k<=n;k++)s+=

4、a(k);printf("a(%d)=%d",n,a(n));printf("s=%ld",s);}4-6顺转矩阵的递归设计当数阵的行数与列数不相等时,数阵称为矩阵。显然,顺转方阵是顺转矩阵的特例。图4-8为5行6列的顺转矩阵。试应用递归设计构造并输出任意指定m行×n列的顺转矩阵。//m×n顺转矩阵递归设计#includeintm,n,a[20][20]={0};voidmain(){inth,v,b,s,d;printf("数阵为m行n列,请确定m,n:");scanf("%d,%d",&m,&n);s=m>

5、n?n:m;b=1;d=1;voidt(intb,ints,intd);//递归函数说明t(b,s,d);//调用递归函数printf("%d×%d顺转矩阵:",m,n);for(h=1;h<=m;h++){for(v=1;v<=n;v++)printf("%3d",a[h][v]);printf("");}return;}voidt(intb,ints,intd)//定义递归函数{intj,h=b,v=b;if(s<=0)return;//递归出口if(s==1&&m==n)//n=m且n为奇数时的递归出口{a[h][v]=d

6、;return;}for(j=1;j<=n+1-2*b;j++)//一圈的上行从左至右递增{a[h][v]=d;v++;d++;}for(j=1;j<=m+1-2*b;j++)//一圈的右列从上至下递增{a[h][v]=d;h++;d++;}for(j=1;j<=n+1-2*b;j++)//一圈的下行从右至左递增{a[h][v]=d;v--;d++;if(d>m*n)break;//min(m,n)为奇数且n>m时停止循环}for(j=1;j<=m+1-2*b;j++)//一圈的左行从下至上递增{a[h][v]=d;h--;d++;if

7、(d>m*n)break;//min(m,n)为偶数或者n

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。