vb 递归函数问题

来源:百度知道 编辑:UC知道 时间:2024/08/22 04:48:51
Private Sub Command1_Click()
Text1.Text = f(Val(Text1.Text))
End Sub

Public Function f(n As Integer) As Integer
If (n = 1 Or n = 0) Then
f = 1
Else
f = n * f(n - 1)
End If
End Function
为什么 f=n*f(n-1)
请把思路说一下 谢谢

虽然我没有学过VB,但是这个程序还是很好理解的,思路如下:
这个程序的意思是用递归法求一个整型数n的阶乘,阶乘的思路是n!=n(n-1)(n-2)(n-3)…1;按照这个公式看来就不难理解了,
1,如果n=1或n=0的情况,结果是1。
2,如果n>1的情况,那么结果等于n乘以(n-1)!,这里(n-1)!其实就是你函数中的f()函数。

但是有一点请楼主要特别注意,这个程序只能用作小数的阶乘(50以内),一旦数据太大则会发生越界,因为一个整型数的最大值是2^32-1。如果非要求巨大数的阶乘,那就要用到其他的算法(还是有点麻烦的呵呵,我曾经用C做过,做了整整半天都没做出来)。

这样说不知道楼主弄清楚了没有,希望对你有帮助,呵呵

这是计算阶乘的吧,
n的阶乘 等于 n 乘 (n-1) 的阶乘,就这个意思