- 3
- 0
- 约6.01千字
- 约 46页
- 2022-05-01 发布于广东
- 举报
棋子移动 问题描述:有2n个棋子排成一行,白子用0代表,黑子用1代表。n=5的状态为: 0000011111_ _ (右边至少两个空位) 移动规则: (1)每次必须移动相邻的两个棋子,这两个棋子不能互换位置 (2)移动的颜色不限,移动的方向不限 要求: 最后成为 _ _ 0101010101 的状态(中间无空格)。 3.递归算法设计 空格在任何地方都是可等价变换的 问题规模为n和为n-1有相似的地方吗? 000……000111……111_ _ (问题的规模n) 000……0011……111_ _01 (问题的规模 n-1,?) 结论: (1)规模为n的问题可以通过两步的移动变成规模为n-1的问题! (2)初值(递归的结束条件n=?可以解) 3.递归算法设计 1.初值的判断: n=2, 0011_ _ → 0_ _ 101 →010_ _ 1 , 无解 n=3, 无解 n=4: 0 0 0 0 1 1 1 1 _ _ 0 0 0 _ _ 1 1 1 0 1 0 0 0 1 0 1 1 _ _ 1 0 _ _ 1 0 1 1 0 0 1 0 1 0 1 0 1 _ _ 0 1 _ _ 0 1 0 1 0 1 0 1 3.递归算法设计 2.递推关系式: 0 0 0 . . . 0 0 0 1 1 1 . . . 1 1 1 _ _ (n) 0 0 0 . . . 0 0 _ _ 1 1 . . . 1 1 1 0 1 0 0 0 . . . 0 0 1 1 1 1 . . . 1 _ _ 0 1 (n-1) 对n-1个棋子进行递归的移动直到n=4为止 3.递归算法设计 3.算法实现: (对棋子的位置进行编号,从1,2,2n,2n+1,2n+2) void chess(int n){ //n为移动的棋子数,n≥4 if( n == 4 ){ //递归出口 …… } else if( n4 ){ //进入递归 move_to(n,n+1, 2n+1,2n+2); move_to(2n-1,2n,n,n+1); chess(n-1); } } 3.递归算法设计 第二章递归算法 递归(Recursion)定义 直接或间接地调用自身的算法称为递归算法 直接或间接调用自身的函数称为递归函数 尾递归是指递归调用的语句在递归函数的最后一句 递归算法的特点: 用于解决一类递归定义的问题 算法易于实现,简单明了 递归算法 1.递归算法的实现机制 递归算法通过子程序/函数来实现 子程序调用的形式 参数传递和返回值的传送 子程序调用的内部操作 递归算法的实现机制 1.1 子程序的调用形式 递归算法的实现机制 主程序 Call A 1: …… 子程序A 一次调用 主程序 Call A 1: …… Call A 2: …… 子程序A 多次调用 … 1 STACK … 1/2 STACK 主程序 Call A 1: …… 子程序A Call B 2: … 子程序B 嵌套调用 子程序A 主程序 Call B 1: …… 子程序B Call A 2: … 平行调用 递归算法的实现机制 … 1 2 STACK … 1 2 STACK 子程序/函数调用形式 关键: 用栈保存返回地址 用寄存器保存返回地址(某些嵌入式处理器) 递归算法的实现机制 1.2参数传递和返回值的回传 参数传递 按值的传送(值调用) 按地址的传送(引用调用) 两次值的传送 地址的传送 函数的返回值 通过寄存器传递(AX/EAX) 通过全局变量的传送 例如 C++中的引用类型,一些脚本语言的引用变量类型都是按地址传送的例子 递归算法的实现机制 参数的传递 值参数 (value parameter) 用于输入参数的传递。一个值参数相当于一个局部变量,只是它的初始值来自为该形参传递的实参。对值参数的修改不影响为该形参传递的实参。 引用参数 (reference parameter) 用于输入和输出参数传递。引用参数与实参变量表示同一存储位置,对值参数的修改直接影响为该形参传递的实参。 递归算法的实现机制 1.3子程序调用的内部操作 Caller: (主调函数) 在栈顶为形式参数开辟空间 计算实参值并赋给栈顶的形参 返回地址入栈 指令流转向被调函数的入口 Callee:(被调函数) 初始化: 局部量保存在堆栈中 从堆栈中取出形参运算 返回: 将返回值保存到回传变量中 从栈中取出返回地址 指令流转到返回地址处继续执行程序 递归算法的实现机制 1.4递归程序的内部实现 内部实现和函数调用类似,代
您可能关注的文档
最近下载
- 新高考数学2025基础生讲义(极品巅峰之作).pdf VIP
- 食材配送车辆卫生管理保障措施.docx VIP
- 欧盟第一部化妆品法规EC No.12232009的内容及要点.pdf VIP
- 2026年南昌健康职业技术学院单招职业技能测试题库推荐.docx VIP
- 2025年北京市朝阳区区高三一模英语试卷(含答案)原卷.pdf
- 完美国际男武侠WX人物形象代码.doc VIP
- 2021年高考物理试卷(重庆)(空白卷).pdf VIP
- 麻醉主任述职报告.pptx VIP
- 深度解析(2026)《RBT 244-2025国产化检测仪器设备验证评价指南 毛细管电泳仪》.pptx VIP
- 北师大版数学四年级上册 总复习(3) 除法.pptx VIP
原创力文档

文档评论(0)