关于求阶乘的问题,请高人指点下。

来源:百度知道 编辑:UC知道 时间:2024/06/28 07:36:54
Private Sub Command1_Click()
Dim p As Long, n As Long
p = n
n = 6
For k = n-1 To 2 Step -1
p = p * k
Next
Print p
End Sub
为什么n的值没有传给p?
我认为n为6,可是n的值为0,为什么?

运行过程如下:
Private Sub Command1_Click()
Dim p As Long, n As Long
p = n 'n=0,p=n=0
n = 6 'n=6,p没有重新赋值,仍为0
For k = n-1 To 2 Step -1 'k=5 to 2,共循环4次
p = p * k '每次p都是0
Next
Print p '最终p=0,n=6
End Sub

n的值确实是6 只不过你自己将
n赋值给p写在 n=6前面~n初始值就等于0 你都还没把6赋值给n 就先把n=0赋值给p 所以.

程序先执行p = n ,再执行n = 6 ,此时p = 0,n = 6

把两句调换即可:

Dim p As Long, n As Long
n = 6
p = n
For k = n-1 To 2 Step -1
p = p * k
Next
Print p