Private Sub Command1_Click()
num = CLng(text1.Text)
Call factorial(num) 错好像是在这一句,,
End SubPrivate Sub text1_Change()
text2.Text = ""
End SubPrivate Sub factorial(mub As Long)
Dim result As Long
Dim ptr As Long
result = 1
For ptr = 1 To num
result = result * ptr
Next ptr
text2.Text = CStr(result)
End Sub我是照书上抄的,,大家帮帮我
num = CLng(text1.Text)
Call factorial(num) 错好像是在这一句,,
End SubPrivate Sub text1_Change()
text2.Text = ""
End SubPrivate Sub factorial(mub As Long)
Dim result As Long
Dim ptr As Long
result = 1
For ptr = 1 To num
result = result * ptr
Next ptr
text2.Text = CStr(result)
End Sub我是照书上抄的,,大家帮帮我
Dim num As Long //加了一句(如不加,后面改一样)
num = CLng(Text1.Text)
Call factorial(num)
End SubPrivate Sub text1_Change()
Text2.Text = ""
End SubPrivate Sub factorial(num As Long)//(改为byval num as long 另外你num在下面写错了!)
Dim result As Long
Dim ptr As Long
result = 1
For ptr = 1 To num
result = result * ptr
Next ptr
Text2.Text = CStr(result)
End Sub
num = CLng(Text1.Text)
If num > 12 Then
MsgBox "参数错误"
SetF Text1
Exit Sub
End If
Call factorial(num) '
End SubPrivate Sub text1_Change()
Text2.Text = ""
End SubPrivate Sub factorial(ByVal mub As Long)
Dim result As Long
Dim ptr As Long
result = 1
For ptr = 1 To mub
result = result * ptr
Next ptr
Text2.Text = CStr(result)End Sub
Private Sub SetF(ctl As Control)
With ctl
.SelStart = 0
.SelLength = Len(Text1.Text)
.SetFocus
End With
End Sub
Dim num As Long
num = CLng(text1.Text)
Call factorial(num)
End SubPrivate Sub Form_Load()
text1.Text = ""
text2.Text = ""
End SubPrivate Sub text1_Change()
text2.Text = ""
End SubPrivate Sub factorial(mum As Long)
Dim result As Long
Dim ptr As Long
result = 1
For ptr = 1 To num
result = result * ptr
Next ptr
text2.Text = CStr(result)
End Sub还是有错呀,,,TEXT2算出来的值老是1呀,,,,,哪有错,这是算阶乘的呀,,
sysmaster(为什么我还不懂)已经说得很清楚了
你错在
Private Sub factorial(mum As Long)
这一句
改成
Private Sub factorial(num As Long)建议在模块前加Option Explicit,或者通过工具菜单的选项子菜单
将“编辑”页中的强制声明变量选择项选中,就不至于犯这种错误了
Private Sub factorial(num As Long)
大佬,它没有报变量未定义就谢天谢地了mum
Dim result As Long
Dim ptr As Long
result = 1
For ptr = 1 To mub''-------------------这里改
result = result * ptr
Next ptr
text2.Text = CStr(result)
End Sub
Option ExplicitPrivate Function factorial(ByVal num As Long) As Long
If num = 1 Then
factorial = 1
Else
factorial = factorial(num - 1) * num
End If
End Function
另外还有byref,按照应用传递参数
VB中默认byval,
建议所有的函数都显示地加上byVal或者byRef
你的阶乘问题:用递归最简单了,这是c++的算法,你把它转换程VB的也是一样
unsigned long mul(int n)
{
unsigned long p;
if(n>1)
p =n*mul(n-1);
else
p=1L;
return p;
}