For Loop 运行 错误

For Loop running error

这段代码没有找到正确的输出

对于 say n= 1(尽管它给出了 say n= 2,3,4..等的正确输出)

如果我们让 n=1 来寻找 x,那么第 i 个循环将从 1 继续到 0,因此 x 中的第一项应该消失,剩下的应该是第二项 5;但它给出 0 ?

for 循环 运行 的输入 n 是否有任何限制?如有任何帮助,我将不胜感激。

 Function math(n As Integer) As Double

 Dim i As Integer
 Dim x As Double

 For i = 1 To n - 1
    x = (n - 1) * 2 + 5
    sum = sum + x
 Next i
 math = sum
 End Function

如果 n = 1,你最终会得到 For i = 1 To 0 这是不正确的
应该表示为For i = 1 To 0 STEP -1.
所以我建议你添加 STEP BY 并确保它是 1 到 -1 取决于 N.

在for循环中,如果不精确Step,变量只会自增1。

在这里,你从 1 开始到 0,所以循环不会执行,你需要测试 n 来涵盖这两种情况:

Function math(n As Integer) As Double
If n < 0 Then Exit Function
Dim i As Integer
Dim x As Double
Dim Summ As Double

Select Case n
    Case Is > 1
        For i = 1 To n - 1
           x = (i - 1) * 2 + 5
           Summ = Summ + x
        Next i
    Case Is = 1
        Summ = (n - 1) * 2 + 5
    Case Is = 0
        Summ = 5
    Case Else
        MsgBox "This case is not supported", vbInformation + vbOKOnly
        Exit Function
End Select

math = Summ
End Function

为什么不简单:

Function math(n As Integer) As Double
  Math = ((n - 1) * 2 + 5) * Abs((n - 1) - (n = 1))
End Function

???

如果答案正确,那么 Math = (n * 2 + 3) * Abs((n - 1) - (n = 1)) 会更容易理解并且更有意义