首页 > 其他 > 详细

汉诺塔简略

时间:2020-09-08 14:56:35      阅读:56      评论:0      收藏:0      [点我收藏+]

问题:这是课堂上提到的一个简略版,就是简单地求一下移动n片铜片要移动多少下。

分析:找递推关系,T(8) = 2T(7) + 1

解释:移动8个铜片,需要先将上面的7个铜片移到B柱子上,然后把A最底下的铜片移动到C柱子上面,此时,那7个铜片还需要再移到C柱子上面,故T(7)要乘以2

技术分享图片

根据递推公式,可以写出C语言测试程序:

#include <stdio.h>

int Hano(int n) {
    if (n == 0 || n < 0)
        return 0;
    if (n == 1)
        return 1;
    return 2 * Hano(n - 1) + 1;
}

int main() {
    int n; // 汉诺塔的铜片数目
    printf("请输入n的值:\n");
    fflush(stdout);
    scanf("%d", &n);
    printf("需要移动的次数为 %d \n", Hano(n));
    return 0;
}

测试结果:

技术分享图片

汉诺塔简略

原文:https://www.cnblogs.com/fanlumaster/p/13631902.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!