汉罗塔的递归实现

来源:互联网 发布:软件编程专业就业方向 编辑:程序博客网 时间:2024/05/17 02:44

首先是汉罗塔的递归实现

#include <stdio.h>void move(char a,int n,char b){//把编号为n的盘从a移动到bprintf("Move %d from %c to %c\n",n,a,b);}void hanio(int n,char x,char y,char z){//把编号从1到n的盘通过y做辅助从x移动到z//要求://1.每次只能移动一个盘//2.任何时候大盘(这里是编号大的)不能在小盘之上if(n==1){move(x,1,z);}else{hanio(n-1,x,z,y);move(x,n,z);hanio(n-1,y,x,z);}}int main(){hanio(3,'A','B','C');return 0;}
运行结果如下:

n=3时:移动2^3-1=7次

当n=4时:移动2^4-1=15次

所以移动次数成指数增长

1 0
原创粉丝点击