[此贴子已经被作者于2007-6-30 13:32:11编辑过]
速度很快,版主厉害的
[此贴子已经被作者于2007-6-21 19:19:33编辑过]
[此贴子已经被作者于2007-6-24 8:51:53编辑过]
如何解决 当 n>170 时的溢出,以及如何把结果变为连串的数字;还有上面第二个问题是什么意思?
Private Sub Form_click()
n = InputBox("input n")
s = 1
x = 1
If n - 1 > 0 Then
For i = 1 To n - 1
s = (i + 1) * s
x = x + s
Next i
End If
Print x
End Sub
如何解决 当 n>170 时的溢出,以及如何把结果变为连串的数字;还有上面第二个问题是什么意思?
Private Sub Form_click()
n = InputBox("input n")
s = 1
x = 1
If n - 1 > 0 Then
For i = 1 To n - 1
s = (i + 1) * s
x = x + s
Next i
End If
Print x
End Sub
如何解决N>170时的溢出,这正是各位要考虑的问题。
斑竹,你的程序精确度太差了。虽然速度很快。但是你的程序算到21!就开始错了,不信你看看。
正确的1! + 2! + 3! + 4! + 5! +...+ 20!=2,561,327,494,111,820,313
而21!=51,090,942,171,709,400,000
你的程序算1! + 2! + 3! + 4! + 5! +...+ 21!=53,652,269,665,821,260,313 多出了40000。
在21的时候就有这么大的误差。那到后面误差不是更大?
我说怎么跟我程序算出来的总是不一样。