2012-11-14 68 views
-2

我想用VB創建帕斯卡的三角形。帕斯卡的三角形與格雷的理論

這裏是我的代碼(它使用灰色的初論):

Dim input As Integer = Val(TextBox1.Text) 
Dim rownumber As Integer = 0 
Dim columnumber As Integer = 1 
Dim x As Integer = 1 

Do Until rownumber = input 
    Do Until rownumber = columnumber 
    Label2.Text = 1 
    If rownumber = 0 Then 
     x = 1 
     Label2.Text = x & " " 
    Else 
     x = x * ((Math.Abs(rownumber - columnumber))/(columnumber)) 
     columnumber = columnumber + 1 
     Label2.Text = Label2.Text & " " & x & " " 
    End If 
    Loop 
    columnumber = 1 
    rownumber = rownumber + 1 
    Label2.Text = x & vbNewLine 
Loop 

另一個想法,我在這裏用階乘(通過函數)則incrememnting行和列的值。這裏是輸出:

1 
1 2 
0 1 3 
0 0 1 4 
0 0 0 1 5 
0 0 0 0 1 6 

和代碼:

Public Class Form1 

Function factorial(ByVal n As Long) 
    If (n <= 0) Then 
    factorial = 1 
    Else 
    factorial = n * factorial(n - 1) 
    End If 
End Function 

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
    Label2.Text = Nothing 
    Dim input As Integer = Val(TextBox1.Text) 

    Dim n As Integer 
    Dim r As Integer 
    Dim c As Integer 
    Dim rnum, cnum As Integer 

    For rnum = 0 To input Step +1 
    For cnum = 1 To (rnum + 1) Step +1 
     c = factorial(cnum)/(factorial(rnum) * factorial(cnum - rnum)) 
     Label2.Text = Label2.Text & " " & c & " " 
    Next 
    Label2.Text = Label2.Text & vbCrLf 
    Next 
End Sub 

末級

+4

問題是什麼?有沒有錯誤? – Marc

+0

這不是輸出帕斯卡的三角形。無論如何調整代碼它只輸出1或0並停止。 –

+1

添加一個斷點,你會發現錯誤比我快 – Marc

回答

0

此行

Label2.Text = x & vbNewLine 

重置LABEL2爲默認x和失去了你所造的一切變化。

的另一個問題是在這裏:

If rownumber = 0 Then 
    x = 1 
    Label2.Text = x & " " 
Else 
    x = x * ((Math.Abs(rownumber - columnumber))/(columnumber)) 
    columnumber = columnumber + 1 
    Label2.Text = Label2.Text & " " & x & " " 
End If 

其中x是唯一隻在第一行1,而應是一個在第一列曾經使算法的工作。

+0

哦,是的,這是正確的,我會補充說。我增加了另一個可能會更好的想法。 –