1
计算机解决递归问题的必要条件
成都师范学院 计算机科学系 匡胤
2
计算机解决递归问题的必要条件
1. 什么是递归问题
2. 三个必要条件
3. 实例:汉诺塔问题
3
递归 (Recursion) :一个过程或函数在其定义或说明中直接或间接调用自身的一种方法。
1. 什么是递归问题
直接递归 间接递归
4
2. 三个必要条件1) 初始问题能转化为一个新的问题,这两个
问题的解决方法是类似的;
2) 经过转化后问题变得更加简单,因而更加容易解决;
3) 转化有终止条件,即在一定条件下,新问题可以直接解决;
5
3. 实例:汉诺塔问题
61 2 3
…64
初始状态
3. 实例:汉诺塔问题
7
终止状态
1 2 3
…64
3. 实例:汉诺塔问题
8
移动规则• 每时刻只能移动一个盘子• 小盘子可以放在大盘子上,反之不行
1 2 3
…64
3. 实例:汉诺塔问题
9
• 如何移动 64 个盘子?
1 2 3
…64
3. 实例:汉诺塔问题
101 2 3
64…
63
• 如何移动 64 个盘子?
3. 实例:汉诺塔问题
111 2 3
… 63
• 如何移动?
3. 实例:汉诺塔问题
121 2 3
… 63
• 如何移动?
3. 实例:汉诺塔问题
131 2 3
• 如何移动?
…63
3. 实例:汉诺塔问题
141 2 3
• 如何移动?
…63 62
3. 实例:汉诺塔问题
15
• 如何移动?
1 2 3
3
3. 实例:汉诺塔问题
161 2 3
• 如何移动?
3. 实例:汉诺塔问题
171 2 3
• 如何移动?
3. 实例:汉诺塔问题
181 2 3
• 如何移动?
3. 实例:汉诺塔问题
191 2 3
• 如何移动?
3. 实例:汉诺塔问题
20
1 2 3
…64
1) 初始问题能转化为一个新的问题,这两个问题的解决方法是类似的;
3. 实例:汉诺塔问题
1 2 33
21
1 2 3
…64
2) 经过转化后问题变得更加简单,因而更容易解决;
3. 实例:汉诺塔问题
1 2 33
22
1 2 3
…64
3) 转化有终止条件,即在一定条件下,新问题可以直接解决;
3. 实例:汉诺塔问题
1 2 33
Top Related