递归实验报告

上传人:hs****ma 文档编号:507571441 上传时间:2024-02-09 格式:DOC 页数:19 大小:79KB
返回 下载 相关 举报
递归实验报告_第1页
第1页 / 共19页
递归实验报告_第2页
第2页 / 共19页
递归实验报告_第3页
第3页 / 共19页
递归实验报告_第4页
第4页 / 共19页
递归实验报告_第5页
第5页 / 共19页
点击查看更多>>
资源描述

《递归实验报告》由会员分享,可在线阅读,更多相关《递归实验报告(19页珍藏版)》请在金锄头文库上搜索。

1、递归实验报告篇一:字符串 , 递归实验报告宁波工程学院电信学院计算机教研室实验报告一、实验目的1)熟悉串的定义和串的基本操作。2)加深对串数据结构的理解,逐步培养解决实际问题的编程能力。3)熟悉递归的定义和递归的算法设计。4)加深对递归算法的理解,逐步培养解决实际问题的编程能力。二、实验环境装有 Visual C 6.0 的计算机。三、实验内容1、凯撒加密算法凯 撒 密 码( caeser )是罗马扩张时期朱利斯? 凯 撒( Julius Caesar)创造的,用于加密通过信使传递的作战命令。它将字母表中的字母移动一定位置而实现加密。他的原理很简单,说到底就是字母与字母之间的替换。每一个字母按

2、字母表顺序向后移 3 位,如 a 加密后变成 d, b 加密后变成 e, x 加密后变成 a,y 加密后变成 b, z 加密后变成 c。例如:“baidu ”用凯撒密码法加密后字符串变为“edlgx ”。试写一个算法, 将键盘输入的文本字符串(只包含 a z的字符)进行加密后输出。 另写一个算法,将已加密后的字符串解密后输出。提示:? 如果有字符变量c 加密后则 a( c- a 3)26? 采用顺序结构存储串,键盘输入字符串后保存到顺序串中;输出用顺序串的输出函数。程序:#include#define MaxSize 100typedef struct /串的类型定义char chMaxSiz

3、e;/存放串字符int len; /串长SqString;void SetString(SqString &s) /设置源码int i;printf(请输入原字符串:);scanf(%s,s.ch);for(i=0;s.chi!=0;i+); /计算串的长度s.len=i;void TranString(SqString s,SqString &t)/开始加密int i;for(i=0;iif(s.chi=a&s.chit.chi=a+(s.chi-a+3)%26; /将每一个字母按字母表顺序向后移3 位elset.chi=s.chi;/如果字符不是字母az,则原样保留t.len=s.len;

4、void RecoverString(SqString s,SqString &t) /开始解密int i;for(i=0;iif(s.chi=d&s.chit.chi=s.chi-3;elseif(s.chi=a&s.chit.chi=s.chi+23;elset.chi=s.chi;/ 如果字符不是字母az,则原样保留t.len=s.len;void DispString(SqString s) /输出字符串int i=0;while(iprintf(%c,s.chi); /字母的逐个输出i+;printf(n);int main()SqStrings1,s2,s3; /s1是源码,s2是

5、加密后密码,s3是解密后密码SetString(s1); /输入字符串DispString(s1); /输出字符串TranString(s1,s2);/加密DispString(s2); /加密后输出字符串RecoverString(s2,s3);/解密DispString(s3); /解密后输出字符串return 0;按实验要求首先定义顺序串,实验的难点在于密码的加密和解密的实现,特别是再解密时,字母的溢出问题,在参考网上程序后很好地解决了这个问题。在字符串的输入时,%s和%c的用法混淆,导致实验一度无法进行。实验编完后,又发现一个如果输入的是非字母的字符,程序就无法运行,因此添加了非字母字

6、符维持原样的代码,使得程序更加完整。2、求解 n 皇后问题编写一个程序, 求解皇后问题: 在 n n 的方格棋盘上,放置 n 个皇后,要求每个皇后不同行、 不同列、不同对角线。要求:使用递归算法求解;皇后的个数n 由用户输入,其值不能超过20。程序:#include#include#includeconst int N=20; /最多皇后个数int count=0;/记录解个数int qN; /存放皇后各皇后所在的行号void print(int n)/输出一个解int i;count+;printf(第 %d个解 ,count);for(i=1;iprintf( %d,qi);printf(

7、n);int find(int i,int k) /测试第 k 列的 i 行上能否摆放皇后int j;j=1;while(jif(qj=i)|(abs(qj-i)=abs(j-k) /是否在 i 行上,位置q(xj,j)return 0;j+;与i,k第 j是否同对角线列皇后return 1;void place(int k,int n) /第 k 个皇后放到第k列上if(kn) /所有皇后放置结束print(n);elsefor(int i=1;iif(find(i,k)qk=i;int main(void)int n;printf(皇后个数 :n);scanf(%d,&n);place(1

8、,n);return 0;本实验,我参考书本上串的基本运算算法并加以修改,添加主程序,调用函数实现的。通过观察和思考书本上的三个 程 序 的 作 用 , 发 现 可 以 通 过 调 用 place(k,n) 来 实 现 find(i,k) 和 print(n) 以及本身的调用,所以程序的切入点在 place(k,n) ,即需要编写一个主程序调用 place(k,n) 。四、实验心得与小结通过本次实验让我对串有了进一步的认识,熟悉串的定义和串的基本操作。加深对串数据结构的理解。熟悉递归的定义和递归的算法设计。加深对递归算法的理解,逐步培养解决实际问题的编程能力。五、指导教师评议成绩评定:指导教师

9、签名:篇二:递归程序的设计实验报告班级信工 082 学号XX06030202姓名李霄实验组别实验日期 XX-12-20 室温报告日期XX-12-20成绩报告内容:( 目的和要求,原理,步骤,数据,计算,小结等)实验名称:实验四递归程序的设计实验目的:1、理解递归程序的设计的基本方法。2、根据整数乘法运算的特点,给出整数乘法运算的递归实现。 实验内容:编写一个递归实现乘法运算的函数,并进行测试,验证设计的正确性。实验学时: 2 学时知识点介绍1、递归算法和课程前面讲的内容不同,递归算法不是一种数据结构,而是一种有效的算法设计方法。递归算法是解决很多复杂问题的有效方法!2、在定义一个过程或函数时出

10、现调用本过程或本函数的成分 , 称之为递归。若调用自身, 称之为直接递归。若过程或函数 p 调用过程或函数q, 而 q 又调用 p, 称之为间接递归。3、如果一个递归过程或递归函数中递归调用语句是最后一条执行语句 , 则称这种递归调用为尾递归。方案介绍由于 x*y=x+x* (y-1 )故函数表达式为chengfa ( x,y)=x+chengfa ( x ,y-1 )递归的出口参数为y=1算法流程#include stdio.h#include conio.hlong chengfa(int x,int y,int a)int z;a=x*y;if (y=1) printf(%d,a);if (y1)a=x+chengfa(x,y-1,a);printf(%d,a);main()int x,y,z,a;printf(qingyi ci shu ru bei cheng he cheng wu:n);scanf(%d %d,&x,&y);printf(cheng ji wei:n);chengfa(x,y,a);实验步骤1、WIN-TC开发环境安装与配置1) 首先在网上下载 WIN-TC的版本;2) 下载完成后进行安装,安装路径默认就可以了,一路 next 就 ok 了;3) 打开

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 演讲稿/致辞

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号