一、函数的镶嵌套用
在C语言的学习中,之前的文章对函数都进行了基本的使用讲解,但是这章节我们将要讲述在一个函数的定义中出现对另一个函数的调用, 这就是我们所说的函数的镶嵌套用,即在一个被调函数内部,又调用了其他的函数。其示意图如图所示。
接下来我们看一道实例分析:
计算1!+2!+…+n!的值,题目的要求是需要函数的嵌套调用方式。
分析:基于模块化思想,可以将该问题分解为二个子问题:(1)依次 计算自然数1~n的阶乘,(2)求这些阶乘值的累加和。可以定义两个 函数来实现。由于要计算的是n个不同的自然数的阶乘的值,因此第一 个函数(命名为factorial)要有一个形参(命名为m),用于识别要计 算的是哪个自然数的阶乘。第二个函数(命名为factorialSum)要明确 对多少个数求和,因此要有一个形参(命名为n)。
//FileName: chap5_7.c
#include <stdio.h>
//计算n!的函数
long factorial(int m)
{
int i;
long t = 1;
for(i = 1; i <= m; i++)
t = t * i;
return t;
}
// 计算累加和的函数
long factorialSum(int n)
{
long sum = 0;
int i;
for(i = 1; i <= n; i++)
sum = sum + factorial(i);
return sum;
}
// 主函数
int main()
{
int n;
long t;
printf("Please input the value of n: ");
scanf("%d", &n);
t = factorialSum(n);
printf("result = %ld\n", t);
return 0;
}
程序运行结果如下: Please input the value of n:5↙ result =153