当前位置: 首页 > news >正文

实验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)

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 文件夹判断操作类 - C#小函数类推荐
  • 哈夫曼树及哈夫曼编码
  • 前端小白安装node、vue、Express、Electron及(Electron桌面端exe应用开发)
  • 干货满满,从零到一:编程小白如何在大学成为编程大神?
  • 滴滴官宣潘展乐为滴滴网约车“快”乐大使
  • AI产品经理的职责与能力:将AI技术转化为实际价值
  • 算法小白的进阶之路(力扣1~5)
  • 复制知乎文字内容
  • 本地VSCode连接远程linux环境服务器的docker
  • 【Linux】文件系统
  • TypeScript中 ?, ??, !, !! 的使用
  • 6小时之可笑中文乱码bug
  • 面试:MySQL 数据库中的 count(1)、count(*)、count(字段)有什么区别?
  • ssh免密认证配置
  • 解决vue 初始化页面闪动问题
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • 【翻译】babel对TC39装饰器草案的实现
  • DOM的那些事
  • es6(二):字符串的扩展
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • gulp 教程
  • php的插入排序,通过双层for循环
  • PyCharm搭建GO开发环境(GO语言学习第1课)
  • SegmentFault 2015 Top Rank
  • Sublime Text 2/3 绑定Eclipse快捷键
  • Tornado学习笔记(1)
  • vuex 笔记整理
  • XML已死 ?
  • 高性能JavaScript阅读简记(三)
  • 个人博客开发系列:评论功能之GitHub账号OAuth授权
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 使用SAX解析XML
  • 7行Python代码的人脸识别
  • Mac 上flink的安装与启动
  • #微信小程序:微信小程序常见的配置传值
  • (03)光刻——半导体电路的绘制
  • (1)(1.13) SiK无线电高级配置(六)
  • (1)虚拟机的安装与使用,linux系统安装
  • (2)(2.10) LTM telemetry
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (pojstep1.1.1)poj 1298(直叙式模拟)
  • (Redis使用系列) SpirngBoot中关于Redis的值的各种方式的存储与取出 三
  • (二)Kafka离线安装 - Zookeeper下载及安装
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (三) prometheus + grafana + alertmanager 配置Redis监控
  • (十五)Flask覆写wsgi_app函数实现自定义中间件
  • (转载)利用webkit抓取动态网页和链接
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • .NET 8 跨平台高性能边缘采集网关