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 3n

【讨论】:

此代码有效。然而,在这个例子中,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 循环的主要内容,如果未能解决你的问题,请参考以下文章

从Visual Basic中的结构中的函数返回值

为啥 Visual Basic 中的 -true 变为 1 [重复]

Visual Basic .NET 中消息框中的按钮

Visual Basic 中的校验和计算

Visual Basic 6 中的 ADODB 连接字符串

INSERT INTO 语句 Visual Basic 中的语法错误