c语言高级编程技术[纪钢][1](1)

c语言高级编程技术[纪钢][1](1)

ID:18625043

大小:594.50 KB

页数:45页

时间:2018-09-19

c语言高级编程技术[纪钢][1](1)_第1页
c语言高级编程技术[纪钢][1](1)_第2页
c语言高级编程技术[纪钢][1](1)_第3页
c语言高级编程技术[纪钢][1](1)_第4页
c语言高级编程技术[纪钢][1](1)_第5页
资源描述:

《c语言高级编程技术[纪钢][1](1)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、C语言高级编程技术8.1递归程序设计C语言支持函数的递归调用。递归就是函数直接或间接地自己调用自己。常见的递归算法有两种,即算术递归与操作递归。递归的基本思想是,将问题P求解的运算规模或操作步骤进行分解,使求解问题P的运算规模或操作步骤可以由求解一个简单问题以及在更小规模或更小步骤上求解相同的问题P来组成。当运算规模或操作步骤减少到一定程度时,如果问题P的求解算法可简单实现,就可以采用递归算法来实现问题P的求解。比如,求n!与求(n-1)!的运算方法是一样的;当n=0时,0!=1。8.1.1算术递归算术递

2、归是指一切形式的递归算式都可以用递归方法求解。例8.1:用递归方法求n!。#includelongfact(intn){if(n==0)return1;returnn*fact(n-1);}voidmain(){intn;scanf("%d",&n);printf("%d!=%ld",n,fact(n));}例8.2:用递归函数计算两个正整数的最大公约数。#includeintgcd(intm,intn){if(!n)returnm;returngcd(n,m%n)

3、;}voidmain(){inta,b,gcd1;scanf("%d%d",&a,&b);gcd1=gcd(a,b);printf("%d",gcd1);}8.1.2操作递归操作递归是指实现某种操作的递归。例8.3:用递归算法实现一维整型数组元素由小到大冒泡排序。#includevoidsort(inta[],intn){inti,temp;if(n<=0)return;for(i=0;ia[i+1]){temp=a[i];a[i]=a[i+1];a[i

4、+1]=temp;}sort(a,n-1);}voidmain(){intarray[10],i;for(i=0;i<10;i++)scanf("%d",&array[i]);sort(array,9);for(i=0;i<10;i++)printf("%d",array[i]);}例8.4:用递归算法求一正长整型数的各位数字之和。#includeintsum(longi){if(i==0)return0;returni%10+sum(i/10);}voidmain(){longi;sc

5、anf("%ld",&i);printf("%d",sum(i));}8.1.3递归算法的优缺点递归函数的主要优点是可以把算法写的比使用非递归函数时更清晰更简洁,而且某些问题,特别是与人工智能有关的问题,更适宜用递归方法。递归算法的缺点,一是需要额外的内存开销,特别是当递归层次较大时,递归函数需要占用的堆栈内存空间相当大。二是函数的频繁调用会降低程序的执行效率。总之,递归算法要比解决同样问题的非递归算法效率低一些。内存空间需求更多一些。大多数用递归算法解决的问题,都可以找到相应的非递归算法,只有少数问

6、题的求解只有递归算法。由于递归算法具有效率低、内存消耗大等缺点,在设计程序时,若有比较好的非递归算法,应尽量采用非递归算法。8.2文本的屏幕输出和键盘输入8.2.1文本的屏幕输出显示器的屏幕显示方式有两种:文本方式和图形方式。文本方式就是显示文本的模式,它的显示单位是字符而不是图形方式下的象素,因而在屏幕上显示字符的位置坐标就用行和列表示。TurboC的字符屏幕函数主要包括文本窗口大小的设定、窗口颜色的设置、窗口文本的清除和输入输出等函数。这些函数的有关信息(如宏定义等)均包含在conio.h头文件中,因

7、此在用户程序中使用这些函数时,必须用include将conio.h包含进程序。1文本窗口的定义TurboC默认定义的文本窗口为整个屏幕,共有80列25行的文本单元。如图8-1所示,规定整个屏幕的左上角坐标为(1,1),右下角坐标为(80,25),并规定沿水平方向为X轴,方向朝右;沿垂直方向为Y轴,方向朝下。每个单元包括一个字符和一个属性,字符即ASCII码字符,属性规定该字符的颜色和强度。除了这种默认的80列25行的文本显示方式外,还可由用户通过函数:voidtextmode(intnewmode);来显

8、式地设置TurboC支持的5种文本显示方式。该函数将清除屏幕,以整个屏幕为当前窗口,并移光标到屏幕左上角。newmode参数的取值见表8-1,既可以用表中指出的方式代码,又可以用符号常量。LASTMODE方式指上一次设置的文本显示方式,它常用于在图形方式到文本方式的切换。图8-1表8-1方式符号常量显示列×行数和颜色0BW4040×25黑白显示1C4040×25彩色显示2BW8080×25黑白显示3C8080×25彩色显示7M

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

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

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