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