其实,C语言发展的那么多年来,用C语言开发的系统和程序浩如烟海。在发展的同时也积累了很多能直接使用的库函数。
当在一个函数中调用同一个函数(自身)时,它在C语言中被称为递归。调用相同函数的函数称为递归函数。
一个调用自身,并且在函数调用后不执行任务的函数被称为尾递归。 在尾递归中,我们通常使用return
语句调用相同的函数。下面给出了一个尾递归递归的例子。
recursionfunction(){
recursionfunction();// 函数名称一样,自身调用自身函数
}
我们来看一个使用C语言中的尾递归打印因子数的例子。首先创建一个名称为:recursion的工程,在这个工程下创建一个源文件:recursion-example.c,其代码如下 -
#include
int factorial(int n)
{
if (n < 0)
return -1; /*Wrong value*/
if (n == 0)
return 1; /*Terminating condition*/
return (n * factorial(n - 1));
}
void main() {
int fact = 0;
fact = factorial(5);
printf("\\n factorial of 5 is %d \\n", fact);
}
执行上面代码,得到以下结果 -
shell code-toolbar">factorial of 5 is 120
我们可以通过下面的图形来理解上述递归方法调用的程序:
其实,C 语言程序鼓励和提倡人们把一个大问题划分成一个个子问题,对应于解决一个子问题编制一个函数,因此,C 语言程序一般是由大量的小函数而不是由少量大函数构成的,即所谓"小函数构成大程序"。这样的好处是让各部分相互充分独立,并且任务单一。因而这些充分独立的小模块也可以作为一种固定规格的小"构件", 用来构成新的大程序。
下一篇:编程语言的Istio分层架构
¥29.00
¥299.00
¥498.00
¥399.00