汉诺塔问题详解 (递归)

题意:

汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上安大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。

理论:

三个步骤:

1:将a 上的n-1 借助c 移动到b

2:将a移动到c

3: 将b借助a移动到c

其实就是这三个步骤,!

实现:

# include <stdio.h > void hanoi ( int n, char a, char b, char c ) { if ( n >= 1 ) { hanoi ( n-1, a, c, b ) ; //把n-1跟金针从a移到b(借助c) printf("%c--> %c\n",a,c) ; //把第n跟金针从a移到c hanoi ( n-1,b,a,c) ; //把n-1跟金针从b移到c(借助a) } } void main () { int n ; printf("please input the num:\n"); scanf("%d",&n) ; hanoi ( n, 'A' , 'B' , 'C' ) ; }

    原文作者: 汉诺塔问题
    原文地址: https://blog.csdn.net/self001/article/details/6907920
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞