调用递归函数是为了解决问题。这种函数实际上只知道如何解决最简单的情况,或者所谓的基本情况。如果函数为解决基本情况而调用,那么它将简单地返回一个结果。如果函数为解决较复杂的问题而调用,那么它通常会把问题分成两个概念性的部分:一部分是函数知道如何去做的,另一部分是函数不知道如何去做的。为了使递归可行,后一部分必须和原来的问题相类似,但是相对稍微简单一些或者稍微小一些。这个新问题看起来和原来的问题颇为相似,因为函数启动(调用)自己的一个全新副本用于解决这一问题-这就是递归调用,也称为递归步骤。递归步骤通常包括关键字return,因为它的结果会与函数知道如何解决问题的一部分结合起来,从而形成可传递回原来的调用者-可能就是main函数的结果。

如求阶乘的递归函数:

unsigned long factorial(unsigned long number){
if(number<=1); reuturn 1;
else
    return number*factorial(number-1);}

除了选择结构,也可以选择循环结构:

unsigned long factorial(unsigned long number)
{
    unsigned long result = 1;
    for(unsigned long i = number; i>=1; i--)
        result *= i;
    return result;
}
//fibonacci数列
unsigned long fibonacci(unsigned long number)
{
    if((number==0)||(number==1))
        return number;
    else
        return fibonacci(number - 1) + fibonacci(number - 2);
}