函数的递归
函数可以调用自己,这就叫函数的递归
void recurse(int i)
{
if (i > 0)
{
recurse(i - 1);
}
printf("i = %d\n", i);
}
int main()
{
recurse(10);
return 0;
}
递归的缺点
一个有缺陷的递归会很快耗尽计算机的资源,递归的程序难以理解和维护。
C0FD错误,栈溢出 栈被撑爆了。原因,可能是递归函数的出口问题。
递归的优点
递归给某些编程问题提供了最简单的方法
递归的过程分析
void up_down(int n)
{
printf("in %d, location %p\n", n, &n);
if (n < 4)
up_down((n + 1));
printf("out %d, location %p\n", n, &n);
}
int main()
{
up_down(1);
return 0;
}
有n个人排成一队,问第n个人多少岁,他回答比前面一个人大2岁,再问前面一个人多少岁,他回答比前面一个人大2岁,一直问到最后问第一个人,他回答10岁
int age(int n)
{
int i;
if (n == 1)
i = 10;
else
i = age(n - 1) + 2;
return i;
}
将10进制数转化为二进制数的例子
234在十进制下为2 * 10的2次方 + 3 * 10的1次方 + 4*10的0