汉诺塔以C为中转 把n-1个盘子从a移到b 不是很理解函数怎么会实现的?
答案:1 悬赏:70 手机版
解决时间 2021-10-20 21:17
- 提问者网友:酱爆肉
- 2021-10-20 12:15
汉诺塔以C为中转 把n-1个盘子从a移到b 不是很理解函数怎么会实现的?
最佳答案
- 五星知识达人网友:归鹤鸣
- 2021-10-20 13:45
#include <stdlib.h>//move n plates: from --> to//the buffer can be used, if neededint hanoi(int n, char from, char buffer, char to) { if(n == 1) { //move the NO.1 plate directly: from --> to printf("Move sheet %d from %c to %c\n", n, from, to); //the NO.1 plate is moved & return return 0; } else { //n plates to be moved: from --> to //move the n-1 plates above: from --> buffer //give this task to the next recursion hanoi(n-1, from, to, buffer); //the n-1 plates above were move to buffer //so the NO.n plate can be moved directly printf("Move sheet %d from %c to %c\n", n, from, to); //however the n-1 plates are still in buffer //move them to the terminal position //(the "from" position has no plate, & can be one so-called buffer) hanoi(n-1, buffer, from, to); //the task given is done & return return 0; }}int main(int argc, char *argv[]){ int n; printf("input number of the plates:"); scanf("%d",&n); //end only if 0 is inputed while(n){ hanoi(n, 'A', 'B', 'C'); printf("input number of the plates:"); scanf("%d", &n); } system("PAUSE"); return 0;}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯