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循环运行错误的主要内容,如果未能解决你的问题,请参考以下文章
for循环随机挂在executeFetchRequest:错误:
如何使用 for 循环对多个变量运行配对 wilcoxon 测试