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