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))
会更容易理解并且更有意义
这段代码没有找到正确的输出
对于 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))
会更容易理解并且更有意义