标签:style blog io ar color sp div log bs
#include<stdio.h> #include<stdlib.h> //移动次数 int hanoi(int num) { static int all = 0; if (num == 1) { return 1; } else { all = hanoi(num - 1) * 2 + 1; } return all; } //移动步骤 void hanoi2(int num,char A,char B,char C) { if (num == 1) { printf("%c->%c\n",A,C ); return 1; } else { hanoi2(num - 1,A,C,B); printf("%c->%c\n", A, C); hanoi2(num - 1, B,A , C ); } } void main() { printf("请输入汉诺塔层数!\n"); int num; scanf_s("%d", &num); printf("\n移动次数=%d\n",hanoi(num)); printf("移动方法如下\n"); hanoi2(num,‘A‘,‘B‘,‘C‘); system("pause"); }
追求运行速度最好不用递归,追求代码简洁的话就用递归。
循环能实现的,递归也能实现;用递归能实现的,循环不一定能实现。
注意,在递归前执行的为顺序执行,在递归后执行的顺序为倒序。
标签:style blog io ar color sp div log bs
原文地址:http://www.cnblogs.com/wangliu/p/4137914.html