编程:s=1/1-1/(1+2)+1/(1+2+3)-1/(1+2+3+4)……+1/(1+2+……+n),循环直到某一项的值小于1.0e-6。
这个程序应该怎么写,求高人指点,谢谢!!!
c语言while循环语句
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- lcg_magic 2022-04-05 00:13关注
这道题,其实就是观察规律。
每一项有两点:符号和分数。
符号:项数 符号 第 1 项 + 第 2 项 - 第 3 项 + 第 4 项 - 第 5 项 + …… …… 所以符号是正(+)、负(-)交替。只需要设置一个变量 sign,初始值为 -1,然后每次加法求和之前,都乘以 -1,那么第 1 项就是 +1,第 2 项就是 -1,如此。
每一项是一个分数,分子永远为 1,那么就看分母了。
观察分母:项数 分母 第 1 项 1 第 2 项 1+ 2 第 3 项 1 + 2 + 3 第 4 项 1+ 2 + 3 + 4 …… …… 分母是 1+2+...+当前项的编号,也就是说分母为 (1+2+...+i)求和,如果是第 i 项的话。
停止条件为这个分数小于 1.0e-6 就行。
#include <iostream> using namespace std; int main() { // 符号 int sign = -1; // 退出循环标准 float epsilon = 1.0e-6; // 所有项的和 float sum = 0.0; // 循环次数 int i = 1; // 当前项 float current = 1.0; // 如果当前项小于设置的 epsilon,则跳出循环 while(current > epsilon) { // 每次加之前,需要确定符号,第一项为 “+”,第二项为 “-”,循环往复 sign *= -1; // 累加和 sum += sign * current; // 下一项 ++i; current = 1.0 / ((1 + i) * i / 2); } cout << current << endl; cout << sum << endl; return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 2无用
悬赏问题
- ¥15 PADS Logic 原理图
- ¥15 PADS Logic 图标
- ¥15 电脑和power bi环境都是英文如何将日期层次结构转换成英文
- ¥20 气象站点数据求取中~
- ¥15 如何获取APP内弹出的网址链接
- ¥15 wifi 图标不见了 不知道怎么办 上不了网 变成小地球了
- ¥50 STM32单片机传感器读取错误
- ¥15 (关键词-阻抗匹配,HFSS,RFID标签天线)
- ¥15 机器人轨迹规划相关问题
- ¥15 word样式右侧翻页键消失