计算机程序设计(递归).pptVIP

  • 6
  • 0
  • 约9.1千字
  • 约 52页
  • 2016-12-07 发布于湖北
  • 举报
void hanoi(int n, int a, int b, int c) { if (n 1) { hanoi(n-1, a, c, b); move(n,a,b); hanoi(n-1, b, a, c); } else move(n,a,b); //结束条件 } 3.递归算法设计 棋子移动 问题描述:有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

文档评论(0)

1亿VIP精品文档

相关文档