递归
阶乘
#include<stdio.h>
int Fac(int n)
{
int tmp;
if (n == 0)
{
tmp = 1;
}
else
{
tmp = n*Fac(n - 1);
}
return tmp;
}
int main()
{
printf("%d\n", Fac(5));
return 0;
}
斐波那切数列
#include<stdio.h>
int Fibona(int n)
{
if (n == 1 || n == 2)
{
return 1;
}
else
{
return Fibona(n - 2) + Fibona(n - 1);
}
}
int main()
{
printf("%d\n", Fibona(5));
return 0;
}
斐波那切数列是最不适合递归的数列
汉诺塔
#include<stdio.h>
void Move(char x, char y)
{
printf("%c->%c\n", x, y);
}
void Hanoi(int n, char a, char b, char c)
{
if (n == 1)
{
Move(a, c);
}
else
{
Hanoi(n - 1, a, c, b);
Move(a, c);
Hanoi(n - 1, b, a, c);
}
}
int main()
{
Hanoi(3, 'A', 'B', 'C');
return 0;
}