首页 理论教育 AVR单片机函数递归调用方法

AVR单片机函数递归调用方法

时间:2023-11-20 理论教育 版权反馈
【摘要】:一个函数在它的函数体内,直接或间接地调用它自身,就称为函数的递归调用。但是为了避免无休止地调用自身的情况,因此一定要给递归函数中设置一个终止调用的手段,通常的办法是使用条件判断语句,一旦条件满足后就终止递归调用,一层一层地返回。例如有这样一个程序:可以看出,这是一个递归调用程序,a函数在函数体中调用了自身,但是也不难发现,这是一个死循环函数,程序将陷入无休止的递归调用过程,这并不是所期望的。

AVR单片机函数递归调用方法

一个函数在它的函数体内,直接或间接地调用它自身,就称为函数的递归调用。C语言是允许递归调用的。在递归调用中,函数既是主调函数,又是被调函数,反复调用自身,每调用一次就进入新的一层。但是为了避免无休止地调用自身的情况,因此一定要给递归函数中设置一个终止调用的手段,通常的办法是使用条件判断语句,一旦条件满足后就终止递归调用,一层一层地返回。

例如有这样一个程序:

可以看出,这是一个递归调用程序,a函数在函数体中调用了自身,但是也不难发现,这是一个死循环函数,程序将陷入无休止的递归调用过程,这并不是所期望的。因此将这个程序加入一些判断语句:

int a(int n,int x)

{

现在,在程序中加入了一个变量n,这个变量就是用来控制递归调用的。当n>0时,函数继续调用自身,一旦n<=0就终止递归调用,然后逐层返回。(www.xing528.com)

再来看一个例子:

【例7.10】 计算x的n次方(x和n均为正整数)。

在该例中,power函数通过了power(x,n-1)直接调用了它自身,通过变量n来控制了程序调用的次数,从而实现了计算x的n次方。

递归调用的优点是使程序看上去简洁明了,可以使一些原本复杂的程序简化,但是由于每次调用一个函数时都需要存储空间来保存调用“现场”,以便后面返回,并且递归调用往往涉及同一个函数的反复调用,所以它要占用很大的存储空间,特别是在递归调用次数较多的情况下,将导致程序运行速度较慢。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈