• 什么是递归函数

    前面的学习过程中,我们已经看到过很多调用其他函数的函数实例。例如,函数 A 可以调用函数 B,而函数 B 又可以调用函数 C。

    实际上,函数也可以调用它自己。调用自己的函数称为递归函数。来看以下 message 函数:

    void message()
    {
        cout << "This is a recursive function. \n";
        message();
    }

    该函数显示字符串 "This is a recursive function.",然后调用它自己。每次它调用自己时,循环都会重复。现在应该能发现该函数的问题,因为它没有办法停止递归调用。这个函数就像一个无限循环,因为没有代码阻止它重复。

    要使递归函数有用,则递归函数必须有一个方法来控制递归调用的次数。以下是对 message 函数的修改。它传递了一个整数参数,该参数将保存函数调用自己的次数。

    void message(int times)
    {
        if (times > 0)
        {
            cout << "This is a recursive function.\n";
            message(times - 1);
        }
    }

    该函数包含一个控制递归的 if 语句。只要 times 参数大于零,它将显示消息并再次调用自己。每次它调用自己时,都会传递 times-1 作为参数。例如,假设有一个程序使用以下语句来调用该函数:

    message(3);

    参数 3 将导致函数被调用 4 次。第一次调用函数时,if 语句将显示消息并以 2 作为参数调用自身,如图 1 所示。



    图 1 递归函数调用过程

更多...

加载中...