欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C语言:函数的递归调用

程序员文章站 2022-03-17 13:04:15
...

函数的递归调用:一个函数在它的函数体内,直接或者间接地调用了他本身。

直接递归调用:函数直接调用自身。                              间接递归调用:函数间接调用自身。

如下图:                                                                          如下图:

C语言:函数的递归调用

     防止递归无休止的进行下去,必须在函数内加条件判断,满足条件后就不再做递归调用,然后逐层返回。

通过一个例子来了解函数的递归调用

例:求第五个学生的年龄。

问第五个学生,说他比第四个学生大两岁

第四个学生说他比第三个学生大两岁

第三个学生说他比第二个学生大两岁

第二个学生说他比第一个学生大两岁

第一个说他10岁

解:

可以用如下方法求解

#include<stdio.h>
int Age (int n)
{
	int tmp;
	tmp=10;
	for(int i=1;i<n;i++)
	{
		tmp+=2;
	}
	return tmp;
}
*/
//递归法
int Age(int n)
{
	int x;
	if(n==1)      //是递归停止的条件,当n=1时停止递归调用
	{
		x=10;
	}
	else
	{
		x=Age(n-1)+2;//调用自身的Age函数
		return x;
	}
		//return (Age(n-1)+2);
}
int main()
{
	printf("%d\n",Age(5));
	return 0;
}

可知:Age函数被调用了四次。在函数内部的调用,一个函数调用一个函数,直到n为1时为止,所以最后要加的值是8,然后返回最终的值。

函数的递归调用,就是函数本身调用自己。但是应用递归调用的时候,我们有必要设置一个条件,也就是if语句,目的是能够让这个函数停下来,否则程序将进入到死循环。

最适合使用递归法解决的问题

汉诺塔问题(Hanoi)    (见下一篇博客)

最不适合使用递归法解决的问题

斐波那契数列(Fibon)

 

 

 

相关标签: 函数的递归调用