#include<stdio.h>
main()
{
hanoi(3,'A','B','C');
}hanoi(n,a,b,c)
int n;
char a,b,c;
{int i=1;
if(n==1) printf("%c=>%c\n",a,c);
else
{
hanoi(n-1,a,c,b);
printf("%c=>%c\n",a,c);
hanoi(n-1,b,a,c);
}
}
这是一个汉诺塔的递归调用的实例。有些许看不懂。比如说为什么这里的 hanoi(n-1,a,c,b);为什么表示把n-1个盘子从a借助c移到b?求大神的解释!递归C
main()
{
hanoi(3,'A','B','C');
}hanoi(n,a,b,c)
int n;
char a,b,c;
{int i=1;
if(n==1) printf("%c=>%c\n",a,c);
else
{
hanoi(n-1,a,c,b);
printf("%c=>%c\n",a,c);
hanoi(n-1,b,a,c);
}
}
这是一个汉诺塔的递归调用的实例。有些许看不懂。比如说为什么这里的 hanoi(n-1,a,c,b);为什么表示把n-1个盘子从a借助c移到b?求大神的解释!递归C
printf("%c=>%c\n",a,c);
hanoi(n-1,b,a,c);这一句很重要
先是把a 给c 然后你看 hanoi(n-1,b,a,c);
通过c 置换 即a原来的移动到b 上去了啊
n=2
n=3
....
因為 hanoi(n-1,b,a,c) 是遞歸調用,他會一直調用到n-1 = 1的情況然後再依次返回結果
所以你要去想n=2 n=3 n=4 .... n = n
你可以去學習一下棧,然後可能會更好的幫助你理解遞歸問題