Visual Basic 中的 For-Next 循环
Posted
技术标签:
【中文标题】Visual Basic 中的 For-Next 循环【英文标题】:For-Next Loop in Visual Basic 【发布时间】:2016-02-22 05:23:42 【问题描述】:我想在 Visual Basic 中计算二项式系数,但我只能做分子部分,因为我在分母部分迷路了。我使用的方程式如下图所示。
Equations
看 C(n,k) 方程,我只能做 n 阶乘的分子。我在分母方面遇到问题。我的分子 (n!) 代码如下:
Dim nfactorial As Integer = 1
For i As Integer = 1 To txt3.Text
nfactorial *= i
Next
分母部分应该怎么做?谢谢!
【问题讨论】:
【参考方案1】:您不能单独计算分子和分母。您是否尝试在 .NET 中查找(30!),尤其是使用 Integer
?
这是作业吗?不管怎样,看看下面的帖子:http://csharphelper.com/blog/2014/08/calculate-the-binomial-coefficient-n-choose-k-efficiently-in-c/
vb 中的代码:
Dim result As Decimal = 1
For i As Integer = 1 To K
result *= N - (K - i)
result /= i
Next
Return result
【讨论】:
我忘了在我的问题中补充一点,只有 N 值是用户输入的。从您给出的示例中,N 和 K 都是用户输入的。 感谢您的帮助! :) 有什么不同,可以设置Dim K as Decimal = txt3.Text
也许你可以回答这个问题? :) 假设 n 仍然是唯一的用户输入。如果 n = 3。我想要的是获得 C(3,0)、C(3,1)、C(3,2) 和 C(3,3) 的 C(n,k)。上面的代码仍然适用于这个例子吗?
@Sonson 很高兴你解决了它。用另一个循环换出 N 值?【参考方案2】:
试试这个:
'by example: C(5,3) = 10
Dim n, k As Integer
Dim result As String = ""
n = txt3.Text
For k = 0 To 3
result = result & "For C(" & n & "," & k & ")=" & C(n, k) & vbCrLf
Next
MsgBox(result)
.
.
.
Private Function C(n As Integer, k As Integer)
Dim result As Decimal = 1
For i As Integer = 1 To k
result *= n - (k - i)
result /= i
Next
Return result
End Function
编辑:对于通过键盘输入的k=0 to 3
和n
。
【讨论】:
此代码有效。然而,在这个例子中,n 和 k 都是用户输入的。而在我的情况下,只有 n 是用户输入(我忘了提,抱歉)。不管怎么说,还是要谢谢你! :) 查看代码,n
获取你的textbox
的值,k
是一个常数值,可以根据你的要求改变。
另一个问题。 N 仍然是唯一的用户输入。如果 n = 3。我想获得 C(3,0)、C(3,1)、C(3,2) 和 C(3,3) 的 C(n,k)。上面的代码仍然适用于这个例子吗?
我知道我只需要将 k 值更改为 0、1、2 或 3。但是如果想要的结果是同时获取所有值呢?以上是关于Visual Basic 中的 For-Next 循环的主要内容,如果未能解决你的问题,请参考以下文章