關於VB程式的"迴圈相加"

如發表問題

老師出了一題作業

"1!+2!+3!+...+n!>10的7次方(也就是一百萬)"

算出n為多少時 程式便停止(也就是1!+2!+...+n!大於一百萬就停 並show出n值)

在下有參考網路上大大寫的程式

If Val(Text1.Text) > 17 Then

MsgBox "terminate"

Exit Sub

End If

If Val(Text1.Text) < 1 Then

MsgBox "terminate"

MsgBox "abolish"

Exit Sub

End If

List1.Clear

Do Until M = Val(Text1.Text)

M = M + 1

N = 1

Mux = 1

Do Until N = M

N = N + 1

Mux = Mux * N

Loop

List1.AddItem M & "! =" & Mux

Loop

但要加上"階層相加並到指定值就停止show出n值"的指令

就碰到瓶頸了

請問有大大能幫我一下要加上什麼指令才能使這程式變成老師所要的程式呢?

十分感激^^

1 個解答

評分
  • 9 年前
    最佳解答

    前面這些 code 都可以拿掉了

    If Val(Text1.Text) > 17 Then

    MsgBox "terminate"

    Exit Sub

    End If

    If Val(Text1.Text) < 1 Then

    MsgBox "terminate"

    MsgBox "abolish"

    Exit Sub

    End If

    List1.Clear

    還有 text1 跟 List1 也可以拿掉了,

    這是讓使用者輸入一個數字n, 然後計算 1!=1, 2!=2, 3!=6, .....n!=?

    但是你這個題目要算的是 N 等於多少,而不是讓使用者決定的,

    只要留這一段改寫一下就行了:

    Do Until M = Val(Text1.Text)

    M = M + 1

    N = 1

    Mux = 1

    Do Until N = M

    N = N + 1

    Mux = Mux * N

    Loop

    List1.AddItem M & "! =" & Mux

    Loop

    改成

    Do Until Sum > 10 ^ 7

    M = M + 1

    N = 1

    Mux = 1 Do Until N = M

    N = N + 1

    Mux = Mux * N

    Loop 'List1.AddItem(M & "! =" & Mux)

    List1.Items.Add(M & "! =" & Mux)

    Sum = Sum + Mux

    LoopMsgBox("1!+2!+...+" & M & "!= " & Sum & " > " & 10 ^ 7)

    說明一下程式,其中Mux算出來就是 N! 的值,

    我只是用 Sum 這個變數把 N! 的值作累加而已: Sum = Sum + Mux

    然後原本的判斷式:

    Do Until M = Val(Text1.Text)

    改成當累加的值超過 10 的 7 次方的時候,就停止

    並把 N 與 N! 累加值用 msgbox 顯示出來:

    MsgBox("1!+2!+...+" & M & "!= " & Sum & " > " & 10 ^ 7)

    其中 10^7 是 hardcode 在程式裡,你也可以設置一個 Text

    讓使用者輸入 10000000,隨你高興怎麼改就好了

    如果我沒算錯的話, 10 的 7 次方好像是一千萬才對

    2011-02-27 10:51:06 補充:

    由於 List1 也不需要了,所以原程式改成:

    Do Until Sum > 10 ^ 7

    M = M + 1

    N = 1

    Mux = 1

    Do Until N = M

    N = N + 1

    Mux = Mux * N

    Loop

    Sum = Sum + Mux

    Loop

    MsgBox("1!+2!+...+" & M & "!= " & Sum & " > " & 10 ^ 7)

    參考資料: 自己
還有問題?馬上發問,尋求解答。