可怜我这个菜鸟!

来源:百度知道 编辑:UC知道 时间:2024/06/01 21:47:36
Private Sub Command1_Click()
Dim n As Integer
n = jiecheng(3)
Print n
End Sub

Public Function jiecheng(ByVal p As Integer)
Dim sum, i As Integer
sum = 1
For i = 1 To p
sum = sum * i
Next i
End Function

哥哥姐姐们,我调用一个求阶乘的子函数怎么就掉不了呢?我哪有错呢?谢谢!

几个问题说一下:
Public Function jiecheng(ByVal p As Integer)
改成 Public Function jiecheng(ByVal p As Integer) as integer
要声明jiecheng返回一个integer的值

Dim sum, i As Integer 的用法是不恰当的,这里sum会被声明成variant而不是想像中的interger
声明不建议用逗号连用,要写成
Dim sum as integer
dim i as integer
一定要用逗号的时候要写成Dim sum as integer, i As Integer

最后是函数不返回值的问题,你sum有了但是没有返回
For i = 1 To p
sum = sum * i
Next i
后面加一句
jiecheng = sum

求阶乘用integer的话不能做太大的,因为很快会溢出,建议用long或是double

错误在于你的求阶乘的子函数有问题
应该是
Public Function jiecheng(ByVal p As Integer)
Dim sum, i As Integer
jiecheng = 1
For i = 1 To p
jiecheng = jiecheng * i
Next i
End Function
这样才能返回jiecheng(p)
此外你的n最好定义为double
不然很容易溢出的

精简的程序来了,已经验证OK,在你程序的基本上稍作修改,你也便于理解!!!

Private Sub Command1_Click()
Dim n As Integer
n = jiecheng(3)
Print n
End Sub

Public Function jiecheng(p As