欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 焦点 > 实验2-5-7 求阶乘序列前N项和【多看看函数】

实验2-5-7 求阶乘序列前N项和【多看看函数】

2026/5/26 13:44:42 来源:https://blog.csdn.net/becomeyee/article/details/140859323  浏览:    关键词:实验2-5-7 求阶乘序列前N项和【多看看函数】
//实验2-5-7 求阶乘序列前N项和#include<stdio.h>
#include<math.h>double func(int n)
{if(n==1||n==0)return 1;double result=1;for(int i=2;i<=n;i++){result = result*i;	}return result;}/*这段代码定义了一个名为 `func` 的函数,该函数接收一个整数参数 `n`,并返回一个 `double` 类型的值。
这个函数的主要目的是计算阶乘 `n!`(即从 `1` 乘到 `n` 的乘积)。### 函数解析:1. **基本情况**:- 如果 `n` 等于 `0` 或 `1`,函数直接返回 `1`。这是因为 `0!` 和 `1!` 的值都等于 `1`。2. **递归终止条件**:- 在这个函数中,并没有直接使用递归,而是通过一个循环来计算阶乘。不过,这里提到的基本情况可以看作是一种递归终止条件的模拟。3. **计算阶乘**:- 定义一个 `double` 类型的变量 `result`,初始值设为 `1`。- 使用一个 `for` 循环,从 `2` 遍历到 `n`(包括 `n`),每次循环中将 `result` 乘以当前的循环变量 `i`。- 最终 `result` 的值就是 `n!`。### 示例代码:```c
double func(int n) {if (n == 1 || n == 0) {return 1; // 基本情况}double result = 1;for (int i = 2; i <= n; i++) {result *= i; // 计算阶乘}return result;
}

使用示例:

假设我们要计算 5!,即 5 × 4 × 3 × 2 × 1

  1. 函数不会立即进入基本情况,因为 n 不等于 01
  2. 初始化 result1
  3. 循环从 2 开始,依次乘以 2, 3, 4, 5
  4. 循环结束后,result 的值为 120
  5. 函数返回 120

因此,func(5) 的返回值是 120

这个函数可以用于任何非负整数 n 的阶乘计算。对于负数,由于阶乘的定义只适用于非负整数,因此这个函数不适用。如果需要处理负数的情况,可以在函数开始时增加一个检查,比如:

if (n < 0) {printf("Error: Negative input is not allowed.\n");return -1; // 或者抛出异常等
}

这样就可以确保函数的健壮性。*/
int main(){
int n = 0;
scanf(“%d”, &n);//输入在一行中给出一个不超过12的正整数N。
int sum = 0;
for(int i = 1; i <= n; i++){
sum = sum + func(i);
}
printf(“%d”, sum);
}

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6f258352c8274e479387ffefc9d7f6d9.png)![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/34733cf8bfb24de78d0c35c0d4109679.png)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词