您的位置:首页 > 编程语言 > C语言/C++

汉诺塔递归演示

2014-03-06 19:24 211 查看
#include <stdio.h>

int sum(int n);//1+2+3+......+100的递归函数
void hanNoTa(int n,char A,char B,char C);   //汉诺塔函数
int main(int argc, const char * argv[])
{
int Sum = sum(100);
printf("%d\n",Sum);
char zhu1 = 'A';   //定义柱子A
char zhu2 = 'B';    //定义柱子B
char zhu3 = 'C';    //定义柱子C
hanNoTa(3, zhu1, zhu2, zhu3);

return 0;
}

int sum(int n){
int Sum;
if (1 == n) {
Sum = 1;
}
else
Sum = n + sum(n-1);
return Sum;
}
void hanNoTa(int n,char A,char B,char C){ //第N个在A上的盘子借助B柱子移到C柱子上
if (1 == n) {
printf("将编号为%d的盘子从%c柱子移到%c柱子\n",n,A,C);
}
else{
hanNoTa(n-1,A,C,B);
printf("将编号为%d的盘子从%c柱子移到%c柱子\n",n,A,C);
hanNoTa(n-1, B,A,C);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息