For循环运行错误

Posted

技术标签:

【中文标题】For循环运行错误【英文标题】:For Loop running error 【发布时间】:2015-11-30 08:52:49 【问题描述】:

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

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

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

对于输入 n 运行 for 循环是否有任何限制?我将不胜感激。

 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,循环将运行 0(零)次。这是你的本意,对吧?否则你不会让 for 循环运行 n-1 次......另外,你为什么在循环内使用 (n-1) ?不应该是(i-1)吗?还是我误解了任务? 不是 Excel 错误,更像是一道数学题。 :) 是的,对于 n=1,for 循环运行 0 次,那么 x = 5 应该是 n=1 的输出?在这种情况下如何修改代码以使 n=1 得到 x= 5 并使 n =2、3、4 等的所有值保持不变?不,我必须从 i 运行到 n-1(不是 i-1)的循环。事实上,对于输入 n 的不同值,它是 x 的求和公式。 你想求和的系列的数学函数是什么? 这不是数学问题,而是 vba 问题。对于 i 到 (n-1),我必须计算 x= (n-1)*2 +5 的总和。请查看其他答案。 【参考方案1】:

为什么不简单:

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)) 会更容易理解并且更有意义

【讨论】:

只是为了让我知道...如果我的代码有误,请告诉我...没有大小写,没有循环,简单的数学... @quant1 它是为了解决这个问题......正如 R3uK 的分析器的 cmets 所说,我们不确定这是否是你想要激活的...... 我也认为 x =(i-1)*2+5 更有意义。我的担心很简单,如果 n =1 。它应该只给出输出 5,如果 n>1 则应该运行整个循环。【参考方案2】:

在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

【讨论】:

好的,让我通过运行这个来检查一下。 它给出了 math(1) 的输出 10 但它应该给出 5 。如果这里 n=1 , Else 循环应该简单地计算 x= (0)*2 +5 = 5 但它给出 10 ? Sum 被声明为局部变量,我更正了这一点,因此请尝试编辑! ;) 你需要负数和 0 作为输入吗? @R3uK 我们仍然不知道他要达到什么目标。如果有一个简单的数字排列,例如 0 = 3、1 = 5、2 = 7、3 = 18、4 = 33... 会有所帮助... @quant1 然后请将原始公式添加到您的问题中(您要在此处计算的那个)...对帮助有很大帮助...【参考方案3】:

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

【讨论】:

好的。修改后我又跑了。 它给出了 math(1) 的输出 10 但它应该给出 5 。如果这里 n=1 , Else 循环应该简单地计算 x= (0)*2 +5 = 5 但它给出 10 ?参考:R3uK 回答如下。

以上是关于For循环运行错误的主要内容,如果未能解决你的问题,请参考以下文章

使用循环将信息流传递给setter时出现运行时错误

for循环随机挂在executeFetchRequest:错误:

如何使用 for 循环对多个变量运行配对 wilcoxon 测试

循环中的运行时向量错误

Python - 更好的循环解决方案 - 出现错误后重新运行并在 3 次尝试后忽略该错误

bat for循环语法错误