pascal递归理解.doc
7.6 函数的递归调用
在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用。C语言的特点之一就在于允许函数的递归调用。例如:
int f(int x)
{
int y,z;
z=f(y);
return(2*z);
}
在调用函数f的过程中,又要调用f函数,这是直接调用本函数,见图8.9。下面是间接调用本函数。
图 8.9 图8.10
在调用f1函数过程中要调用f2函数,而在调用f2函数过程中又要调用f1函数,见图8.10。
从图上可以看到,这两种递归调用都是无终止的自身调用。显然,程序中不应出现这种无终止的递归调用,而只应出现有限次数的、有终止的递归调用,这可以用if语句来控制,只有在某一条件成立时才继续执行递归调用,否则就不再继续。
关于递归的概念,有些初学者感到不好理解,下面用一个通俗的例子来说明。
例8.7 有5个人坐在一起,问第5个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第3个人,又说比第2个人大2岁。问第2个人,说比第1个人大2岁。最后问第1个人,他说是10岁。请问第5个人多大。显然,这是一个递归问题。要求第5个人的年龄,就必须先知道第4个人的年龄,而第4个人的
原创力文档

文档评论(0)