C语言学习:汉诺塔问题

汉诺塔_百度百科 (baidu.com)icon-default.png?t=N7T8https://baike.baidu.com/item/%E6%B1%89%E8%AF%BA%E5%A1%94/3468295

//
// Created by zzh on 2024/8/6.
//

//汉诺塔问题

#include<stdio.h>

void move(char x, char y) {
    printf("%c --> %c \n", x, y);
}

int hanoi(int count, int n, char one, char two, char three) {
    //将n个盘从one座借助two座移动到three座
    count = count + 1;
    if (n == 1) {
        move(one, three);
    } else {
        count = hanoi(count, n - 1, one, three, two);
        move(one, three);
        count = hanoi(count, n - 1, two, one, three);
    }
    return count;
}

int main() {
    int m;
    int count;
    printf("input the number of disks:");
    scanf("%d", &m);
    printf("The step to move %d disks:\n", m);
    count = hanoi(0, m, 'A', 'B', 'C');
    printf("the times of moving disks is %d \n", count);
    return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值