递归的思维就是不考虑具体怎么实现,只考虑最先做的两步是什么,至于后面的内容无需考虑
1. 汉诺塔:
#include <stdio.h>
void hanoi(int num,char first,char mid,char end)
{
if(num == 1)
{
printf("将%d层: 从%c ----> %c.\n",num,first,end);
return;
}
hanoi(num-1,first,end,mid);
printf("将%d层: 从%c ----> %c.\n",num,first,end);
hanoi(num-1,mid,first,end);
}
int main()
{
hanoi(3,'A','B','C');
return 0;
}
运行结果:
将1层: 从A ----> C.
将2层: 从A ----> B.
将1层: 从C ----> B.
将3层: 从A ----> C.
将1层: 从B ----> A.
将2层: 从B ----> C.
将1层: 从A ----> C.
2. 画三角形
#include <stdio.h>
void tu(int num,int s)
{
if(num==0)
return;
tu(num-1,s);
for(int i=0;i<s*2-1;i++)
{
if(i>s-num-1&&i<s+num-1)
{
printf("*");
}
else printf(" ");
}
printf("\n");
}
void tu0(int num)
{
tu(num,num);
}
int main()
{
tu0(5);
return 0;
}
运行结果:
*
***
*****
*******
*********