6.2.3 函数的递归调用

函数的递归调用是指在一个自定义函数中再嵌套使用相同函数,以实现循环调用相同函数的功能。在实例程序中,使用函数的递归调用可以减少代码的编写。但是,函数递归调用将会大大影响程序运行的效率,并且容易造成程序死循环。在本节中,将介绍与函数递归调用相关的知识点。简而言之,函数递归调用就是函数自己调用自己。例如,用户在实例程序中,自定义一个函数add(),用于实现加法运算输出计算结果,并且利用该函数实现递归调用。具体的代码如下:

void add(int a); //声明自定义函数的原型
#include <stdio.h> //包含标准输入/输出头文件
    int cmp=0; //定义并初始化中间计算值
main() //主函数开始
{
    int b=0; //定义并初始化整型变量
    printf("请输入一个数据:\n"); //输出提示语
    scanf("%d",&b); //获取用户的输入
    add(b); //调用自定义函数
    return 0;
}
void add(int a) //实现自定义函数
{
    cmp=cmp+a; //实现累加
    printf("计算结果为:%d\n",cmp); //输出提示语
    if(cmp>=10) //判断数值
{
    printf("递归调用完毕!\n");
    }
else
    {
            add(cmp); // 自定义函数本身
        }
}

图6.7 程序运行结果

在实例代码中,用户自定义了一个函数“add(int a)”,用于实现数据的相加操作。在主函数中,用户直接调用了该自定义函数,并将获取到的输入数据作为该函数的参数。而在自定义函数的功能实现代码中,用户使用代码段“cmp=cmp+a;”实现累加操作,并输出累加后的结果。为了实现函数的递归调用,在函数add()中,又以累加后的值作为参数,对自定义函数add()进行调用。这样,用户就能够实现数据的累加效果,其运行结果如图6.7所示。

如图6.7所示,程序运行后,将在界面中成倍地输出累加后的数据。利用函数的递归调用,可以对同一个函数或者同一数据进行多次处理或调用。

注意 在使用递归调用时,必须使用必要的代码结构对控制程序运行,防止出现死循环。例如,在实例代码中,用户使用了一个if结构对累加值进行判断。