3.2.8递归函数程序设计 - 递归函数程序设计_实验项目

合集下载

《C语言程序设计》课程教学大纲

《C语言程序设计》课程教学大纲

《C语言程序设计》课程教学大纲课程编号:T1032080课程名称:C语言程序设计课程英文名称:THE C LANGUAGE PROGRAMMING学时:60 讲课学时:30 实验学时:习题课学时:上机学时:30学分:3开课单位:计算机科学与技术学院授课对象:全校非计算机、理工科专业本科生先修课程:大学计算机基础课程要求:必修课程分类:计算机公共基础课一、课程教学目的C语言程序设计是高等工科院校中非计算机专业的一门计算机公共基础课。

设置本课程的主要目的是培养学生的程序设计、实现及调试能力。

通过本课程的学习,使学生学会用计算机处理问题的思维方法,增强解决问题的编程实践能力,为将来从事软件开发及后继课程的学习和解决工程问题、科学技术问题奠定基础。

二、教学内容及学时安排1 基础知识(1学时)C语言的发展历程;软件开发的基本过程;编程的基础知识。

2C数据类型(1学时)常量与变量;简单的屏幕输出;基本数据类型;计算变量或数据类型所占内存空间的字节数;变量的赋值和赋值运算符;程序的开发环境(Visual C++6.0和Code:Blocks)简介。

3 简单的算术运算和表达式(2学时)算术运算符和表达式;复合的赋值运算符;增1和减1运算符;宏常量与宏替换;const 常量;自动类型转换;强制类型转换运算符;常用的标准数学函数。

4 键盘输入和屏幕输出(2学时)字符常量;单个字符的输入输出;数据的格式化屏幕输出;数据的格式化键盘输入。

5 选择控制结构(2学时)生活中的问题求解方法;计算机问题求解的基本特点;算法的概念和描述方法;关系运算符与关系表达式;逻辑运算符和逻辑表达式;选择控制结构;条件语句;switch语句。

6 循环控制结构(4学时)循环控制结构;循环语句;计数控制的循环;条件控制的循环;嵌套循环;流程的转移控制(goto语句,break语句,continue语句);结构化程序设计的核心思想。

7 函数(4学时)分而治之与信息隐藏;函数的定义;函数调用;函数原型;向函数传递简单变量的值;从函数返回一个值;递归函数;变量的作用域与存储类型;自顶向下、逐步求精的模块化程序设计方法。

c语言程序设计教程第二版课后习题答案

c语言程序设计教程第二版课后习题答案

c语言程序设计教程第二版课后习题答案【篇一:c语言程序设计教程_李含光_郑关胜_清华大学出版社习题答案习题答案[完美打印版]】1.单项选择题(1)a (2)c(3)d (4)c (5)b 2.填空题(1)函数(2)主函数(main)(3)printf() , scanf()第2章习题参考答案1.单项选择题1-5 cbccc 6-10 cdcdc 11-13 dbb 2.填空题(1)1(2)26 (3)6 , 4 , 2 (4)10 , 6(5)3.000000 (6)双精度(double)(7)9 (8)字母,数字,下划线(9)13.700000 (10)11(11)((m/10)%10)*100+(m/100)*10+m%10(12)0 (13)10 ,9 ,11(15)(x0y0)||(x0z0)||(y0||z0)(16)double (17)x==0(18)sqrt(fabs(a-b))/(3*(a+b))(19)sqrt((x*x+y*y)/(a+b))第3章习题参考答案1.单项选择题1-5 cccdd 6-10 bcdbc11-15 bcbbb16 a 2.填空题(1)用;表示结束(2){ }(3)y=x0?1:x==0?0:-1(4)y%4==0y%100!=0||y%400==0(5)上面未配对(6)default 标号(7)while , do while , for(8)do while(9)本次(10)本层 3.阅读程序,指出结果(1)yes(2)*(3)abother(4)28 70(5)2,0(6)8(7)36 (8)1(9)3,1,-1,3,1,-1(10)a=12 ,y=12(11)i=6,k=4 (12)1,-2 4.程序填空(1)x:y , u:z(2)m=n , m!=0,m=m/10(3)teps , t*n/(2*n+1) , printf(“%lf\n”,2*s) (4)m%5==0 ,printf(“%d\n”,k) (5)cx=getchar() , cx!=front , cx(6)double s=0, 1.0/k , %lf (7)s=0 , sgmin, 5.编程题(1). #include stdio.h int main() {double x,y; scanf(%lf,x); if(x1) y=x;else if(x=1.0x10) y=2*x-11; elsey=3*x-11;printf(%lf\n,y); return 0; } (2).#include stdio.h int main() {double x,y,z,min;scanf(%lf%lf%lf,x,y,z); if(xy) min=y; else min=x; if(minz)min=z;printf(min=%lf\n,min); return 0; } (3).#include stdio.h int main() {int y,m,d,flag,s=0,w,i;scanf(%d%d%d,y,m,d);flag=(y%4==0y%100!=0||y%400==0);w=((y-1)*365+(y-1)/4-(y-1)/100+(y-1)/400)%7;for(i=1;i=m;i++) {switch(i) {case 1:s=d;break; case 2:s=31+d;break; case 3:s=59+d;break; case 4:s=90+d;break; case 5:s=120+d;break; case6:s=151+d;break; case 7:s=181+d;break; case8:s=212+d;break; case 9:s=243+d;break; case10:s=273+d;break; case 11:s=304+d;break; case12:s=334+d;break;} }s=(w+s)%7; if(s==0)printf(星期日\n); elseprintf(星期%d\n,s); return 0; }(4).#include stdio.h int main() {float p,r;scanf(%f,p); if(p=10) r=p*0.1;else if(p10p=20) r=10*0.1+(p-10)*0.075; else if(p20p=40)r=10*0.1+10*0.075+(p-20)*0.05; else if(p40p=60)r=10*0.1+10*0.075+20*0.05+(p-40)*0.03;else if(p60p=100)r=10*0.1+10*0.075+20*0.05+20*0.03+(p-60)*0.015; else if(p100)r=10*0.1+10*0.075+20*0.05+20*0.03+40*0.015+(p-100)*0.01; printf(%f\n,r); return 0; } (5).#include stdio.h int main() {char c;while((c=getchar())!=\n) {if(c=ac=z) c=c-32; putchar(c);}return 0; } (6).#includestdio.h int main() {int m,k=2;printf(输入一个正整数:\n); scanf(%d,m); while(km) if(m%k==0) {printf(%4d,k); m=m/k; } else k++;printf(%4d\n,m); return 0; } (7).#includestdio.h int main() {int a,n,s=0,p=0,i;scanf(%d %d,n,a); for(i=1;i=n;i++) {p=p*10+a; s=s+p; }printf(%d\n,s); return 0; } (8).#includestdio.h int main(){int i,j,k;for(i=1;i=9;i++) for(j=0;j=9;j++) for(k=0;k=9;k++)printf(%5d,100*i+10*j+k); return 0; }(9).#includestdio.h #includemath.h int main() {float a=-10,b=10,x,f1,f2,f; f1=(((2*a-4)*a+3)*a)-6; f2=(((2*b-4)*b+3)*b)-6; do {x=(a+b)/2;f=(((2*x-4)*x+3)*x)-6; if(f*f10) { b=x; f2=f; } else { a=x;f1=f; }}while(fabs(f)=1e-6); printf(%6.2f\n,x); return 0; }(10).#includestdio.h#includemath.h int main() {int n=2;double eps,t,s=0,x;scanf(%lf %lf,x,eps); t=x; s=t;while(fabs(t)=eps) {t=-t*(2*n-3)*x*x/(2*n-2); s=s+t/(2*n); n++; }printf(%d,%lf\n,n,s); return 0; }(11).#includestdio.h int main() {unsigned long s,t=0,p=1; scanf(%u,s); while(s!=0) {if((s%10)%2!=0) {t=t+(s%10)*p; p=p*10; }s=s/10; }printf(%u\n,t); return 0; }第4章习题参考答案1.单项选择题1-5 dddbd 6-10 badcd 11-14 bdab 2.填空题(1)2(2)嵌套,递归(3)全局变量,局部变量,静态变量,动态变量(4)auto , static , register , extern (5)外部变量(6)编译,运行 3.阅读程序,指出结果(1)15(2)5(3)5,4,3 (4)i=5 i=2 i=2 i=4 i=2(5)求水仙花数(6)-5*5*5(7)30 (8)0 10 1 11 2 124.程序填空(1)float fun(float , float) , x+y,x-y, z+y,z-y (2)x , x*x+1 (3)s=0 , a=a+b 5.编程题(1).while(s!=0) #includestdio.h { unsigned int fun(unsigned int);p=p+s%10; int main() s=s/10; { } unsigned int s; return p; scanf(%u,s); } printf(%u\n,fun(s)); (2). return 0;#includestdio.h } #includestdlib.h unsigned int fun(unsignedint s) #includemath.h { void f1(float,float,float,float); unsigned int p=0; void f2(float,float,float,float);【篇二:《c语言程序设计》课后习题答案(第四版)谭浩强】t>1.1什么是计算机程序11.2什么是计算机语言11.3c语言的发展及其特点31.4最简单的c语言程序51.4.1最简单的c语言程序举例61.4.2c语言程序的结构101.5运行c程序的步骤与方法121.6程序设计的任务141-5 #include stdio.hint main ( ){ printf (**************************\n\n);printf( very good!\n\n);printf (**************************\n);return 0;}1-6#include stdio.hint main(){int a,b,c,max;printf(please input a,b,c:\n);scanf(%d,%d,%d,a,b,c);max=a;if (maxb)max=b;if (maxc)max=c;printf(the largest number is %d\n,max);return 0;}第2章算法——程序的灵魂162.1什么是算法162.2简单的算法举例172.3算法的特性212.4怎样表示一个算法222.4.1用自然语言表示算法222.4.2用流程图表示算法222.4.3三种基本结构和改进的流程图262.4.4用n?s流程图表示算法282.4.5用伪代码表示算法312.4.6用计算机语言表示算法322.5结构化程序设计方法34习题36第章最简单的c程序设计——顺序程序设计37 3.1顺序程序设计举例373.2数据的表现形式及其运算393.2.1常量和变量393.2.2数据类型423.2.3整型数据443.2.4字符型数据473.2.5浮点型数据493.2.6怎样确定常量的类型513.2.7运算符和表达式523.3c语句573.3.1c语句的作用和分类573.3.2最基本的语句——赋值语句593.4数据的输入输出653.4.1输入输出举例653.4.2有关数据输入输出的概念673.4.3用printf函数输出数据683.4.4用scanf函数输入数据753.4.5字符数据的输入输出78习题823-1 #include stdio.h#include math.hint main(){float p,r,n;r=0.1;n=10;p=pow(1+r,n);printf(p=%f\n,p);return 0;}3-2-1#include stdio.h#include math.hint main(){float r5,r3,r2,r1,r0,p,p1,p2,p3,p4,p5;p=1000;r5=0.0585;r3=0.054;r2=0.0468;r1=0.0414;r0=0.0072;p1=p*((1+r5)*5);// 一次存5年期p2=p*(1+2*r2)*(1+3*r3); // 先存2年期,到期后将本息再存3年期 p3=p*(1+3*r3)*(1+2*r2); // 先存3年期,到期后将本息再存2年期p4=p*pow(1+r1,5); // 存1年期,到期后将本息存再存1年期,连续存5次 p5=p*pow(1+r0/4,4*5); // 存活期存款。

C语言程序设计全套教学教程完整版电子课件最全ppt电子教案

C语言程序设计全套教学教程完整版电子课件最全ppt电子教案

上一页 下一页
目录
8.1 指针的概念、定义和引用 8.1.1 指针的概念 8.1.2 指针变量的定义 8.1.3 指针变量的引用 8.2 指针与函数 8.2.1 指针变量作函数参数 8.2.2 返回值为指针的函数 8.2.3 通过指针调用函数
上一页 下一页
Hale Waihona Puke 目录8.3 指针与数组 8.3.1 指针与数组的关系 8.3.2 数组名作函数参数的指针解释 8.3.3 指针数组 8.3.4 多级指针 8.4 指针与字符串 8.4.1 字符串的表示形式 8.4.2 字符串指针作函数参数
2.汇编语言
汇编语言的指令与机器语言的指令基本上保持了一一对应的关系。与 机器语言比起来,汇编语言易记、易读、易检查、易修改,但却不能 被计算机直接识别和执行,必须由翻译程序翻译成机器语言程序后才 能执行。汇编语言仍然是面向特定计算机的语言,也仍然是低级语言
下一页
返回
1.1 程序设计语言概述
3.高级语言 高级语言是接近人类自然语言和数学语言的程序设计语言,具有以下
上一页 下一页
目录
5.2 do-while语句 5.3 for语句 5.4 break和continue语句 5.5 多重循环 5.6 综合应用举例 第6章 数组 6.1 数组概述 6.2 一维数组
上一页 下一页
目录
6.2.1 一维数组的定义 6.2.2 一维数组的引用 6.2.3 一维数组的初始化 6.2.4 一维数组的程序举例 6.3 二维数组 6.3.1 二维数组的定义 6.3.2 二维数组的引用 6.2.3 二维数组的初始化
翻译成目标程序,然后执行该目标程序。解释方式是把源程序逐句翻
上一页 下一页 返回
1.1 程序设计语言概述

程序设计题库及答案详解

程序设计题库及答案详解

程序设计题库及答案详解程序设计题库及答案详解是面向计算机科学与技术专业学生以及编程爱好者的一份重要学习资料。

它不仅包含了大量的编程题目,还提供了详细的解题思路和答案,帮助读者深入理解程序设计的原理和技巧。

# 一、基础题目1. 题目1:编写一个程序,实现两个整数的加法。

- 答案详解:首先定义两个整数变量,然后使用加法运算符将它们相加,并将结果存储在一个新变量中。

最后,输出结果。

2. 题目2:编写一个程序,实现字符串的反转。

- 答案详解:可以使用循环结构遍历字符串的每个字符,并将它们添加到一个新的字符串的开始位置。

完成后,输出反转后的字符串。

# 二、数组与循环3. 题目3:编写一个程序,找出数组中的最大值。

- 答案详解:首先初始化一个变量来存储最大值,然后使用循环遍历数组中的每个元素,并与当前最大值进行比较,如果当前元素更大,则更新最大值。

循环结束后,输出最大值。

4. 题目4:编写一个程序,实现数组的排序。

- 答案详解:可以使用冒泡排序或选择排序等算法。

以冒泡排序为例,通过多次遍历数组,比较相邻元素的大小,并在必要时交换它们的位置,直到整个数组有序。

# 三、函数与递归5. 题目5:编写一个函数,计算两个数的乘积。

- 答案详解:定义一个函数,接受两个参数,然后在函数内部使用乘法运算符计算它们的乘积,并返回结果。

6. 题目6:编写一个递归函数,计算阶乘。

- 答案详解:定义一个递归函数,如果输入的数为0或1,则返回1;否则,返回输入数乘以递归调用该函数的结果,输入数减1。

# 四、数据结构7. 题目7:编写一个程序,实现链表的插入操作。

- 答案详解:首先定义链表节点的结构,然后编写一个函数来创建新的节点。

在插入操作中,根据插入位置的不同,调整节点的指针指向。

8. 题目8:编写一个程序,实现二叉树的遍历。

- 答案详解:可以使用前序、中序或后序遍历。

以中序遍历为例,首先遍历左子树,然后访问根节点,最后遍历右子树。

《VB程序设计》课程标准

《VB程序设计》课程标准

课程标准课程名称:Visual Basic程序设计学时学分:160(2)专业层次:微机制订日期:2012年9月归口单位:计算机工程系制订人:Visual Basic程序设计是一个理论和实际紧密相连的技术,上机实验是教学中的必要环节。

现提出一套可行的“Visual Basic程序设计”课程的课程标准。

1 课程概述●课程研究的对象和研究内容随着计算机的普及和以Internet为代表的信息高速公路的迅速发展,计算机应用已深入到社会的各行各业,这不仅要求当今的大学生要掌握好本专业知识,同时还要有用计算机技术为本专业服务的能力。

因此熟练掌握一种计算机应用软件开发工具是对大学生的基本要求,这将直接影响到计算机在其他专业领域中的应用。

本课程所讲授的Visual Basic即是一种易学实用、适用面广的面向对象的软件开发平台。

VB程序设计课程可以使学生掌握软件设计的基础知识和基本方法,培养学生具有利用软件开发环境解决实际问题的能力,为进一步学习其它计算机知识及今后使用或开发应用程序奠定基础。

●课程在整个课程体系中的地位“Visual Basic程序设计”属于计算机基础教育课程的三个层次“文化、技术、应用”中的第二层次,是微机高职专业学生必修的计算机技术基础课程。

它的先修课是《信息技术基础》。

2. 课程目标(1)使学生理解程序设计的基本概念,建立起程序设计的基本思路,提高学生的理论知识水平。

主要包括了算法的概念、程序设计中的基本技巧和一些常用算法;能够阅读、理解源程序和设计解题流程的能力;了解结构化程序设计和面向对象程序设计的思想,能编制出风格良好的程序;最后达到使用Visual Basic 建立一个小型的应用系统的目的。

(2)使学生掌握基本的程序设计的技术和方法,培养学生的实际动手能力。

这些技术和方法包括算法的设计,程序的实现,能够使用Visual Basic建立一个小型的应用系统。

(3)使学生了解程序设计在本专业的应用、发展及其趋势,培养学生的科研素质。

递归函数的例子python卖鸭子_Python递归的经典案例

递归函数的例子python卖鸭子_Python递归的经典案例

递归函数的例子python卖鸭子_Python递归的经典案例递归函数在程序设计中经常被用来解决一些问题,其中一个经典的例子是用递归函数来计算卖鸭子的收益。

假设有一家卖鸭子的餐馆,每只鸭子的售价是10元,而且顾客可以选择一个套餐,套餐包括一只鸭子和一瓶酱汁。

每瓶酱汁的售价是5元。

现在我们需要编写一个递归函数,来计算卖出n只鸭子的总收益。

首先我们需要定义函数sell_ducks,该函数接收一个整数参数n,表示卖出的鸭子数量。

函数的返回值为卖出n只鸭子的总收益。

接下来我们需要考虑递归的终止条件和递归的逻辑。

当n等于0时,表示没有鸭子可卖,所以总收益为0。

这就是递归的终止条件。

当n大于0时,我们可以将卖出n只鸭子的总收益分成两部分。

一部分是卖出一只鸭子的收益,即10元;另一部分是卖出n-1只鸭子的收益,即sell_ducks(n-1)。

卖出n只鸭子的总收益等于这两部分的和。

具体实现如下:```def sell_ducks(n):if n == 0: # 终止条件return 0else:duck_price = 10sauce_price = 5return duck_price + sell_ducks(n-1) + sauce_price```我们可以通过调用sell_ducks函数来计算卖出不同数量鸭子的总收益。

```profit = sell_ducks(3)print(profit) # 输出结果为45```上述代码中,sell_ducks(3)计算卖出3只鸭子的总收益,即10+10+10+5+5 = 45虽然递归函数可以解决一些问题,但使用不当会导致性能问题和堆栈溢出等风险,所以在实际应用中需要谨慎使用。

大学python程序设计教案

大学python程序设计教案

课程名称:计算机科学与技术授课对象:计算机科学与技术专业本科生教学目标:1. 使学生掌握Python编程语言的基本语法和常用数据结构。

2. 培养学生运用Python进行程序设计的能力,解决实际问题。

3. 培养学生的逻辑思维能力和团队协作精神。

教学重点:1. Python基本语法和常用数据结构。

2. 控制流程、函数、模块和异常处理。

3. 程序调试和优化。

教学难点:1. 控制流程的设计与优化。

2. 函数和模块的应用。

3. 异常处理和程序调试。

教学内容:一、Python简介1. Python的历史与发展2. Python的特点与应用领域3. Python的安装与配置二、Python基本语法1. 标识符、关键字和注释2. 基本数据类型:数字、字符串、列表、元组、字典、集合3. 运算符和表达式三、控制流程1. 条件语句(if、elif、else)2. 循环语句(for、while)3. break、continue、pass语句四、函数和模块1. 函数的定义与调用2. 参数传递和默认参数3. 递归函数4. 模块和包5. 导入和引用五、异常处理1. 异常的概念和分类2. try-except语句3. 自定义异常六、程序调试和优化1. 断点调试2. 调试器使用3. 程序优化技巧教学过程:一、导入1. 介绍Python编程语言的特点和应用领域。

2. 引导学生了解Python编程的重要性。

二、基本语法1. 讲解标识符、关键字和注释。

2. 介绍基本数据类型:数字、字符串、列表、元组、字典、集合。

3. 讲解运算符和表达式。

三、控制流程1. 讲解条件语句(if、elif、else)和循环语句(for、while)。

2. 讲解break、continue、pass语句的使用。

四、函数和模块1. 讲解函数的定义与调用,参数传递和默认参数。

2. 讲解递归函数。

3. 讲解模块和包,导入和引用。

五、异常处理1. 讲解异常的概念和分类。

递归函数python

递归函数python

递归函数pythonPython语言是一种高级编程语言,用于解决复杂问题。

它提供了很多强大的特性,其中之一就是递归函数。

本文旨在介绍如何使用递归函数和Python语言来解决问题。

首先,让我们简单介绍一下什么是递归函数。

简单地说,递归函数是指一个函数调用自身,以解决某个问题。

它包含两个部分:一个基础情况,以及一个递归情况。

基础情况是指一个函数首先检查输入参数,然后返回一个结果。

递归情况是指函数利用自身来解决复杂问题,而不是简单的返回基础情况的结果。

在Python中,使用递归函数的最常见的场景就是通过它来计算阶乘。

阶乘是一种数学函数,它表示从1乘到某个数的乘积,即:n!=n*(n-1)*(n-2)*…*1。

例如,3的阶乘是 3! = 3*2*1 = 6。

下面是一个使用递归函数计算阶乘的Python代码:def factorial(n):if n == 0:return 1else:return n * factorial(n-1)print(factorial(5))上面的程序会输出 120,即 5!值。

除此之外,Python也可以使用递归函数来解决commonly used algorithms(常用算法),比如排序。

更进一步,递归函数也可以用来解决数据结构的问题,比如二叉树。

在使用递归函数时,一定要小心,以免因为未能正确写出递归函数而导致程序出错。

比如:用递归函数实现二叉树搜索时,要确保使用正确的节点判断条件,以免程序出错。

递归函数是一种高效的程序设计技巧,它可以解决复杂问题,极大地减少代码量。

在使用递归函数时,首先要考虑基础情况,然后再考虑递归情况,这样才能正确应用递归函数。

正确使用递归函数可以大大提高程序的效率,使用Python语言实现递归函数时,仍需要遵循上述基础规则。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验项目一
1.实验名称:求斐波那契数列项
2.实验目的:
(1)熟练掌握递归函数的定义、实现与调用方法。

(2)熟练掌握循环与分支结构。

3.实验任务
(1)实验内容:编写求斐波那契数列项的函数,返回值为第n项值。

斐波那契数列的定义为:
f(0)=0,f(1)=1
f(n)=f(n-2)+f(n-1) (n>1)
(2)实验要求:输入正整数n,输出斐波那契数列前n项,每行5个。

要求用递归方法,并写出相应的主函数。

测试案例:
4.实验分析
(1)问题分析:问题的定义本身就是一个递归表示法:
递归出口:f(0)=0,f(1)=1
递归公式:f(n)=f(n-2)+f(n-1) (n>1)
有了这2个关键点,程序变得简单。

(2)实现要点:用函数fib(n)表示第n项斐波那契数列值,主函数循环调用fib(i),便可产生斐波那契数列前n项。

5.实验思考题
请比较递推法和递归法实现的不同。

实验项目二
1.实验名称:将正整数n转换为二进制
2.实验目的:
(1)熟练掌握递归思想。

(2)熟练掌握递归函数的定义、实现与调用方法。

3.实验任务
(1)实验内容:输入1 个正整数n,将其转换为二进制后输出。

(2)实验要求:要求定义并调用函数 dectobin(n),它的功能是输出 n 的二进制。

测试案例:
4.实验分析
(1)问题分析:首先应了解手工计算的过程。

通过不断整除2得到余数,直到商为零为止,将得到的余数系列逆序输出,即为转换的二进制数。

(2)实现要点:对于递归程序设计的2个关键点:
递归式:不断除2,输出余数
递归出口:商为0
余数系列逆序输出解决方法:先递归调用,再输出,dectobin(n)= dectobin(n/2)+输出(n %2)。

由于是先递归,再输出,因此递归会不断深入直到出口为止,然后返回回来后才能输出,达到了逆序的目的。

5.实验思考题
如何将本例推广到任意进制数的转换输出。

实验项目三
改正下列程序中的错误,输入一个整数n (n 0)和一个双精度浮点数x,输出函数P(n,x)的值(保留2位小数)。

1 (n=0)
P(n, x) = x (n=1)
((2n-1)*P(n-1,x)-(n-1)*P(n-2,x))/n (n>1)
输入输出示例
Enter n, x: 10 1.7
P(10,1.70) = 3.05
源程序(有错误的程序)
#include <stdio.h>
int main(void)
{
int n;
double x, result;
printf(“Enter n, x: ”);
scanf("%d%lf", &n, &x);
result = p(n,x);
printf("P(%d,%.2lf) = %.2lf\n", n, x, result);
return 0;
}
double p(int n, double x)
{
p(n,x) = ((2 * n - 1) * p(n - 1,x) - (n - 1) * p(n - 2,x)) / n;
return p(n,x);
}
编译错误汇总:
错误行号: 正确语句:
错误行号: 正确语句:
错误行号: 正确语句:
错误行号: 正确语句:
1.改正上述编译错误后,再次编译连接后无错误出现,运行程序:
运行输入测试数据为 10 1.7,运行结果为: ,是否正确:2.请仔细分析错误产生的原因,模仿调试事例中方法进行调试改错。

并简要说明你的方法并给出正确语句:
方法:
改错汇总:
错误行号: 正确语句:
错误行号: 正确语句:
错误行号: 正确语句:
错误行号: 正确语句:
错误行号: 正确语句:。

相关文档
最新文档