为什么执行了一次就退出For循环?

王朝知道·作者佚名  2009-07-06
窄屏简体版  字體: |||超大  
 
分類: 電腦/網絡 >> 程序設計 >> 其他編程語言
 
問題描述:

编写了以下程序计算5!+4!+3!+2!+1!

Private Sub Form_Click()

Dim sum As Integer, i As Integer

For i = 5 To 1 Step -1

sum = sum + Multiply(i)

Next

Print "sum="; sum

End Sub

Private Function Multiply(n As Integer) As Integer

Multiply = 1

Do While n > 0

Multiply = Multiply * n

n = n - 1

Loop

End Function

可是运行结果却是120,即只计算了5!,是不是因为在第一次调用Multiply函数后n的值为0,由于实参与形参共享地址单元,实参i的值也是0,所以再次调用函数时,就不符合Do While n>0这个条件,所以就退出循环呢?

如果我想把实参i变为表达式,因为表达式是按值传递的。那应该怎么改呢?

谢谢!

參考答案:

正如你所将,FOR只执行了一次后I就等于0了,所以就终止循环了。

解决方法:再引用一个变量:a=i

然后sum = sum + Multiply(a) 就可以解决你的问题了

或者在函数中修改一处,不让共享地址单元的数字在函数中参与运算,引用第二个变量:

Private Function Multiply(n As Integer) As Integer

js=n

Multiply = 1

Do While js > 0

Multiply = Multiply * js

js = js - 1

Loop

End Function

小贴士:① 若网友所发内容与教科书相悖,请以教科书为准;② 若网友所发内容与科学常识、官方权威机构相悖,请以后者为准;③ 若网友所发内容不正确或者违背公序良俗,右下举报/纠错。
 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航