double fact( int n ) { int i; double m=1; if(n==0) return m; else for(i=1;i<=n;i++) m=m*i; return m; } double factsum( int n ) { int j; double sum; sum=0; if(n>0) { for(j=1;j<=n;j++) sum+=fact(j); } return sum; }详细逐行讲解
时间: 2023-12-02 18:03:42 浏览: 190
这段代码是一个包含两个函数的程序,第一个函数是 `fact`,用于计算一个整数的阶乘,第二个函数是 `factsum`,用于计算一系列整数的阶乘之和。
下面是逐行讲解:
```
double fact( int n ) {
```
这一行定义了一个返回值为 `double` 类型、名称为 `fact` 的函数,这个函数接受一个整数参数 `n`。
```
int i; double m=1;
```
这一行定义了两个变量,一个是整数类型的变量 `i`,用于循环计数;另一个是 `double` 类型的变量 `m`,用于保存阶乘的值,初始值为 1。
```
if(n==0)
return m;
```
这一行是一个条件语句,如果传入的整数 `n` 等于 0,则直接返回初始值 1。
```
else
for(i=1;i<=n;i++)
m=m*i;
```
如果传入的整数 `n` 大于 0,则执行循环语句。循环语句的初始值为 `i=1`,循环条件为 `i<=n`,每次循环 `i` 的值加 1,循环体内将 `m` 乘以 `i`,即计算阶乘。
```
return m;
}
```
最后,函数 `fact` 返回计算出的阶乘值。
```
double factsum( int n ) {
```
这一行定义了另一个返回值为 `double` 类型、名称为 `factsum` 的函数,这个函数接受一个整数参数 `n`。
```
int j; double sum; sum=0;
```
这一行定义了两个变量,一个是整数类型的变量 `j`,用于循环计数;另一个是 `double` 类型的变量 `sum`,用于保存阶乘之和的值,初始值为 0。
```
if(n>0) {
for(j=1;j<=n;j++)
sum+=fact(j);
}
```
这一行是一个条件语句,如果传入的整数 `n` 大于 0,则执行循环语句。循环语句的初始值为 `j=1`,循环条件为 `j<=n`,每次循环 `j` 的值加 1,循环体内将计算出的 `fact(j)` 加入到 `sum` 中,即计算阶乘之和。
```
return sum;
}
```
最后,函数 `factsum` 返回计算出的阶乘之和的值。
阅读全文