一个求累加和程序的求解过程

这篇博客通过一个求解累加和的题目,逐步引导读者理解如何从简单问题出发,解决复杂的数学问题。从求1-1/2!+1/3!-...+1/9!开始,逐步引入循环语句和精度控制,探讨编程求解此类问题的方法。同时,博主推荐了一个人工智能教程,并鼓励分享知识。
摘要由CSDN通过智能技术生成

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow

也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!

               

【题目】求f=1-1/2!+1/3!-...+1/9!


【本文结构】

  看题目,有点难度(相对而言,熟悉编程后,这只是一个非常典型的问题)。将我带着大家把这个问题分解一下,由易到难解出来。

  我们要经历的过程是:

  (一)求f=1+2+...+9【很简单的问题】

  (二)求f=1-2+3-4+...+9【在(一)的基础上,学习如何一正一负地累加】

  (三)求f=1-1/2+1/3-1/4+...+1/9【在(二)的基础上,被加数成了自然数的倒数】

  (四)求f=1!-2!+3!-4!+...+9!【在(二)的基础上,被加数成了自然数的阶乘】

  (五)求f=1-1/2!+1/3!-...+1/9!【运用(三)和(四)的方法就能出来了】

  (六)用哪种循环语句其实并不是大事,本题以上的部分而言,for循环还是最好的

  (七)求f=1-1/2!+1/3!-1/4!+...,要求精度达到0.0000001【对题目的扩充,在数值求解时,常常并不限定累加的项数,而是用精度控制】

  如果这些题目对你目前已经不存在问题,体会这个化简的过程就可以关闭页面了。要学会这种办法,让自己由简而繁地工作。


【相关练习题(加*者在文后给了参考例程)】

  • 对于任何正整数n,求1+n+n*n+n*n*n。
  • 不断从键盘中输入实数,边输入边累加,直到它们的和超过1000时为止。
  • 计算正整数n以内(包括n)的奇数之和及偶数之和。
  • 已知本金为a,年利率为x%,试求存入银行多少年后本、利和翻一番。(提示:用s表示本、利合计,循环要表达的是“当(s<2*a)时,增加1年,计算下一年末的本、利合计”)
  • 求任一长整数n的各位数字之和(提示:本题在每次循环中应该提取出某一位数并累加,即,先分离出个位累加,将n缩小10倍,重复操作直至n=0时为止。 )
  • 求任一长整数n的所有因子的之。(提示:循环中对所有可能成为该数因子的数进行考察,如果是因子,累加。 )
  • 在歌星大奖赛中,有10个评委为参赛的选手打分,分数为1~100分。选手最后得分为:去掉一个最高分和一个最低分后其余8个分数的平均值。请编写一个程序实现。

  • (*)一个百万富翁遇到一个陌生人,陌生人找他谈一个换钱的计划,该计划如下:我每天给你十万元,而你第一天只需给我一分钱,第二天我仍给你十万元,你给我两分钱,第三天我仍给你十万元,你给我四分钱,....,你每天给我的钱是前一天的两倍,直到满一个月(30天),百万富翁很高兴,欣然接受了这个契约。请编写程序计算30天后陌生人给了百万富翁多少钱,百万富翁给了陌生人多少钱?这个换钱计划对百万富翁是个划算的交易吗?
  • (*)现在北京有一套房子,价格200万,假设房价每年上涨10%,一个软件工程师每年固定能赚40万。如果他想买这套房子,不贷款,不涨工资,没有其他收入,每年不吃不喝不消费,那么他需要几年才能攒够钱买这套房子? (答案会让人很悲观。不过房价这样涨,是不正常的,总有泡泡吹破的一天。)

【本文正文】

  (一)先做一个简单程序:f=1+2+...+9

  这太简单了!

int main()const int n=9;   //把9定义成常变量,这是个好办法,增强可读性、可维护性,见P30,讲过  int i,f;   //本题求值后,f为整数,所以用int型。要根据情况选数据类型。i将用于控制循环,用int  f=0;   //赋初值很重要,也可以定义的同时初始化。有同学算出了莫名其妙的和,因为没有赋初值  for(i=1;i<=n;i++)    f=f+i;         //请深刻理解for有运行机制,要习惯于这种思维  cout<<f<<endl;}
[小评论,为了解本题目求解过程的读者,直接跳到(二)]
  在这段程序中,for可以有各种其他写法,但惟有此为最佳:i控制了循环的次数(理解为何叫计数型循环)。我们将i称作为循环变量。在for(;;)中两个分号隔开的三部分中,分别只给循环变量赋初值、判断是否结束循环、循环变量调整,其余的任何操作统统放到别的地方去做。例如此处,为f赋初值放在循环前、累加的工作作为循环体。除些之外,别的写法,如
for(f=0,i=1;i<=n;i++) f=f+i;

  或
f=0,i=1
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值