递归
调用函数本身
设置了正确的结束条件
用递归实现算法:求5的阶乘,即5!=?
#include <stdio.h>
int factorial(int n)
{
int res = n;
if (n > 0)
{
res *= factorial(n - 1);
}
else
res = 1;
return res;
}
int main()
{
printf("%d", factorial(5));
return 0;
}
用递归实现汉诺塔
#include <stdio.h>
char *hanoi(int n, char x, char y, char z)
{
if (n == 1)
printf("%c-->%c\n", x, z);//当x针只有一个铁片时,把其从x针移往z针
else
{
hanoi(n - 1, x, z, y);//借助z针把x针上的铁片移往y针上
printf("%c-->%c\n", x, z);//将x针上的铁片移往z针上
hanoi(n - 1, y, x, z);//借助x针,把y针上的铁片移往z针
}
}
int main()
{
hanoi(3, 'X', 'Y', 'Z');
return 0;
}