éå½ï¼recursionï¼ï¼ç¨åºè°ç¨èªèº«çç¼ç¨æå·§ã
éå½æ»¡è¶³2个æ¡ä»¶ï¼
1ï¼æåå¤æ§è¡çè¿ç¨ï¼è°ç¨èªèº«ï¼
2ï¼æè·³åºåå¤æ§è¡è¿ç¨çæ¡ä»¶ï¼éå½åºå£ï¼
éå½ä¾åï¼
ï¼1ï¼é¶ä¹
n! = n * (n-1) * (n-2) * ...* 1(n>0)
//é¶ä¹
int recursive(int i)
{
int sum = 0;
if (0 == i)
return (1);
else
sum = i * recursive(i-1);
return sum;
}
ï¼2ï¼æ²³å
å¡é®é¢
//æ²³å
å¡
void hanoi(int n,int p1,int p2,int p3)
{
if(1==n)
cout<<"çåä»"<<p1<<"移å°"<<p3<<endl;
else
{
hanoi(n-1,p1,p3,p2);
cout<<"çåä»"<<p1<<"移å°"<<p3<<endl;
hanoi(n-1,p2,p1,p3);
}
}
ï¼3ï¼å
¨æå
ä»n个ä¸åå
ç´ ä¸ä»»åmï¼mâ¤nï¼ä¸ªå
ç´ ï¼æç
§ä¸å®ç顺åºæåèµ·æ¥ï¼å«åä»n个ä¸åå
ç´ ä¸ååºm个å
ç´ çä¸ä¸ªæåãå½m=næ¶ææçæåæ
åµå«å
¨æåã
å¦1,2,3ä¸ä¸ªå
ç´ çå
¨æå为ï¼
1,2,3
1,3,2
2,1,3
2,3,1
3,1,2
3,2,1
//å
¨æå
inline void Swap(int &a,int &b)
{
int temp=a;
a=b;
b=temp;
}
void Perm(int list[],int k,int m)
{
if (k == m-1)
{
for(int i=0;i<m;i++)
{
printf("%d",list[i]);
}
printf("n");
}
else
{
for(int i=k;i<m;i++)
{
Swap(list[k],list[i]);
Perm(list,k+1,m);
Swap(list[k],list[i]);
}
}
}
温馨提示:答案为网友推荐,仅供参考