- 1
- 0
- 约2.04千字
- 约 12页
- 2019-11-09 发布于广东
- 举报
第5章 递归 5.1 n阶乘 5.2 斐波纳契数 5.3 将输入的词组以先进后出法打印 5.4 一个典型的递归范例:汉诺塔 5.5 程序集锦 5.6 思考题 第5章 递归 一个调用它本身的函数称为递归函数。 5.1 n阶乘 n! = n × (n-1)!… (n-1)! = (n-1) × (n-2)! (n-2)! = (n-2) × (n-3)! 1! = 1 从上述公式可得知其相同的规则为:某一数A的阶乘为本身A乘以(A-1)的阶乘。其程序如下: 5.1 n阶乘 public int fact(int n) { int ans; if(n==1) ans=1; else ans=n×fact(n-1); return ans; } 在编写递归程序时,千万要记住必须有一个结束点,可以使函数往上追溯直到结束。如上例中,当n = 1时,1! = 1即为其结束点。 5.2 斐波纳契数 斐波纳契数(Fibonacci number)表示某一数为其前两个数的和,假设n0 = 1,n1 = 1,则 n2 = n1 + n0 = 1 + 1 = 2 n3 = n2 + n1 = 2 + 1 = 3 ?… 所以ni = ni–1 + ni–2 5.1 n阶乘 其递归程序如下: public int fibon(int n) { int ans; if(n==0||n==1) ans=1; else ans=fibon(n-1)+fibon(n-2); return(ans); } 5.3 将输入的词组以先进后出法打印 编译程序在处理递归时,会借助栈将调用本身函数的下一个语句的地址存储起来,待执行完后,再将栈的数据一一出栈处理。下面以一范例说明。此例是将输入的词组(word)以先进后出的方式打印出来,其程序如下: public static void push_f() { // 新增函数 DataInputStream in=new DataInputStream(System.in); 5.3 将输入的词组以先进后出法打印 if(top=MAX-1) // 当栈已满,则显示错误 System.out.print(\n Stack is full !\n); else { top++; System.out.print(\n Please enter item to insert: ); System.out.flush(); try { stack[top]=in.readLine(); }catch (IOException e) {} } System.out.println(); } 5.4 一个典型的递归范例:汉诺塔 19世纪在欧洲有一游戏称为汉诺塔(Towers of Hanoi),有64个大小不同的金盘子,3个镶钻石的柱子分别为A、B、C,现要求把64个金盘子从A柱子借助B柱子移到C柱子,游戏规则为: (1)每次只能移动一个盘子。 (2)盘子有大小之分,大盘子必须在下,小盘子在上。 假设有n个金盘子(1, 2, 3, …, n-1),数字越大表示重量越重,其搬移的算法如下: 5.4 一个典型的递归范例:汉诺塔 假设n = 1则搬移第1个盘子从A到C 否则: ① 搬移n-1个盘子从A到B,借助C ② 搬移第n个盘子从A到C ③ 搬移n-1个盘子从B到C,借助A 编写的程序如下: 5.4 一个典型的递归范例:汉诺塔 public static void HanoiTower(int n,char from,char aux,char to) { if (n==1) System.out.print(Move disk+n+from+from+-+to+\n); else { // 将A上n-1个盘子借助C移到B HanoiTower(n-1, from,to,aux); System.out.print(Move disk+n+from+from+-+to+\n); // // 将B上n-1个盘子借助A移到C HanoiTower(n-1,aux,from,to); } } 5.5 程序集锦 1.利用递归的方式计算n阶乘 2.利用递归方式计算斐波纳契数 3.利用递归方式解汉诺塔问题 5.6 思考题 1. 请举几个使用递归的例子,并详细说明其递归的做法。 2. 继续上题,将所举的例子以C语言来执行。 3. 试计算出有n个金盘子在汉诺塔 B柱子,共需移动多少次
您可能关注的文档
- 肿瘤标志物及临床应用p pt.ppt
- 英语口语之科技改变 生活.ppt
- 英语六大基本 句型 结构.ppt
- 转体桥总体施工方 案 精品.ppt
- 肿瘤患者便秘的原因分析及 护理 措施.ppt
- 资本论资料的 逻辑.ppt
- 资本主义政治制度在欧洲大 陆的 扩展.ppt
- 鲁教版高中地理必修三第二单元第一节人地关系思想的 演变.ppt
- 高中音乐鉴赏肖友梅与 黄自.ppt
- 英语七年级下第六 单 元 .ppt
- DB2301_T 224-2024 鼠类防制操作规程 冰雪场所.docx
- 2024CPXY-J487 高强石膏基纤维板应用构造.docx
- 2023CPXY-J479 水性瓷化(墙膜)涂料系统.docx
- DB54_T 0106-2017 西藏禾本科牧草和农作物秸秆青贮饲料生产.docx
- DB45∕T 2155-2020 暴雨强度公式编制技术规范.docx
- GB_T 45287-2025 信息技术 移动设备增强现实系统应用程序接口.docx
- 水运视频监控系统建设技术规范 JTS-T 160-2021.docx
- DB31_T 1644-2025 基于区块链的智能网联汽车行驶数据存证技术规范.docx
- SJG 181.3-2024 市政工程消耗量标准 第三册 隧道工程.docx
- 水运工程桶式基础结构检测与监测技术规程 JTS-T 246-2023.docx
原创力文档

文档评论(0)