- 14
- 0
- 约8.06千字
- 约 27页
- 2019-01-22 发布于江苏
- 举报
子程序的递归与套
子程序的嵌套与递归 1、复习函数与过程——子程序 子程序的定义 定义位置 如何定义? 子程序的调用 在何处调用? 如何调用? 参数的传递 值传递,地址传递 变量的作用域 全局,局部 子程序如何返回值到调用处 函数通过函数名带回值 子程序可通过变量参数和全局变量的方式带回值到调用处 【例1】:输入一个正整数,如果是回文素数则输出“Yes”,否则输出“No” 【分析】定义两个并列关系的函数,分别判断一个数是否为素数和是否为回文数 教材P93 例5-11 递归应用 课堂练习1、program lx1(input,output); var s,n:integer; function f(n:integer):integer; ?begin ? if n=1 then f:=1 else f:=n*n+f(n-1) ?end; begin ?write(‘input n:’);readln(n);s:=f(n);writeln(‘f(’,n,‘)=’,s) end. 该程序的功能是: 。当n的值为6时,程序的运行结果是: 如何设计递归算法? 1.确定递归公式 2.确定边界(终了)条件 递归过程 【例8】:把一个十进制整数转换成K进制数(k10)。 分析 根据数制转换规则,把一个十进制整数转换成K进制数,要用“除K取余”法。也就是用K依次去除这个数及其商,所得余数依次作为K进制数相继的低位数字,一直到商为0即可。 如果我们不用数组存储每次求得的低位数字,怎么让程序按顺序输出K进制的各位数字? 分析 可以用递归的方法实现这一过程。算法过程tentok(number,k)如下: 步一 digit?number mod k; 步二 number?number div k 步三 如果number不为0则调用 tentok(number,k) 步四 输出digit 执行过程分析 例9、汉诺塔问题 有n个半径各不相同的圆盘,按半径从大到小,自下而上依次套在A柱上,另外还有B、C两根空柱。要求将A柱上的n个圆盘全部搬到C柱上去,每次只能搬动一个盘子,且必须始终保持每根柱子上是小盘在上,大盘在下。 var a,b,c,number:integer; procedure move(n: integer;a,b,c:char); begin ???? if n=1 then writeln(a,-,c) ???? else ???????? begin ????????????? move(n-1,a,c,b); ????????????? writeln(a,-,c); ????????????? move(n-1,b,a,c) ???????? end; end; begin ???? write(the number of dish:); ???? readln(number); ???? move(number,’A’,’B’,’C’); end. 【例10】求找出具有下列性质的数的个数(包含输入的自然数n): 先输入一个自然数n(n=500),然后对此自然数按照如下方法进行处理: ①. 不作任何处理; ②. 在它的左边加上一个自然数,但该自然数不能超过原数的一半; ③. 加上数后,继续按此规则进行处理,直到不能再加自然数为止. 样例:? 输入:? 6 满足条件的数为? ?6 ??????????????? 16 ??????????????? 26 ?????????????? 126 ?????????????? ? 36 ?????????????? 136 输出:? 6 【例11】、求m与n的最大公约数 分析:从数学上可以知道求m与n的最大公约数等价于求n与(m mod n)的最大公约数。这时可以把n当作新的m, (m mod n)当作新的n,这样问题又变成了求新的m与n的最大公约数……这种方法我们称为辗转相除法。 设两个整数分别为m和n,将m整除n得到一个余数r,若r=0,则除数n就是最大公约数,否则,将除数作为被除数,余数作为除数继续相除,直到余数=0为止。 【分析】对于一个已确定的数组a[1]至a[n]和一个确定的数m,判断能否使数组a中任意几个元素之和等于m,等价于判断能否从数组a中取任意数使其和为m。 此时若a[n]=m,则可以输出“YES”,否则若n=1,则可以输出“NO”。 否则可以按以下规则进行判断:对于a中任意元素a[n]只有取与不取两种情况: (1)取a[n]: 则此时问题转化为:对于一个已确定的数组a[1]至a[n-1]和一个确定的数m-a[n],判断
您可能关注的文档
最近下载
- 医学课件-社区护理学——绪论.pptx VIP
- 2022年袋鼠数学思维Level-A (1-2年级) 真题+解析.pdf VIP
- 中国国家标准 GB/T 13761.1-2022土工合成材料 规定压力下厚度的测定 第1部分:单层产品.pdf
- (2025)全国辅警考试题库及答案.docx VIP
- 冀美版小学美术四年级下册全册教案.doc
- 设计与开发控制程序.docx VIP
- 专题26 导数及其应用解答题(八大考点,100题)(解析版)十年(2016-2025)高考数学真题分类汇编.docx
- 【建筑专业】12J502-2内装修室内吊顶(完整).pdf VIP
- 2-霍尼菲尔扫描头n5680操作手册.pdf VIP
- 大学Access数据库课件.pptx VIP
原创力文档

文档评论(0)