题目内容

编写一个程序,求1!+2!+…+10!的值(其中n!=1×2×3×…×n).

分析:这个问题可以用“WHILE+ WHILE”循环嵌套语句格式来实现.

程序结构要做到如下步骤:

①处理“n!”的值;(注:处理n!的值的变量是一个内循环变量)

②累加“n!”的值.(注:累加n!的值的变量是一个外循环变量)

显然,通过10次循环可分别求出1!、2!、…、10!的值,并同时累加起来, 可求得S的值.而求T=n!,又可以用一个循环(内循环)来实现.

解:程序为:

s=0

i=1

WHILE i<=10

  j=1

  t=1

  WHILE j<=i

    t=t*j

    j=j+1

WEND

  s=s+t

  i=i+1

WEND

PRINT s

END

思考:上面程序中哪个变量是内循环变量,哪个变量是外循环变量?

解答:内循环变量:j,t.外循环变量:s,i.

    上面的程序是一个的“WHILE+WHILE”型循环嵌套语句格式.这是一个比较好想的方法,但实际上对于求n!,我们也可以根据求出的(n-1)!乘上n即可得到,而无需重新从1再累乘到n.

程序可改为:

s=0

i=1

j=1

WHILE i<=10

  j=j*i

  s=s+j

  i=i+1

WEND

PRINT s

END

    显然第二个程序的效率要比第一个高得多.第一程序要进行1+2+…+10=55次循环,而第二程序进行10次循环.如题目中求的是1!+2!+…+1 000!,则两个程序的效率区别会更明显.

点评:解决具体的构造循环语句的算法问题,要尽可能地少引入循环变量,否则较多的变量会使得设计程序比较麻烦,并且较多的变量会使得计算机占用大量的系统资源,致使系统缓慢.另外,也尽可能使得循环嵌套的层数少,否则也浪费计算机的系统资源.

练习册系列答案
相关题目

违法和不良信息举报电话:027-86699610 举报邮箱:58377363@163.com

精英家教网