如何计算小于 n 的所有正整数的总和?

如何计算小于 n 的所有正整数的总和?

我有以下功能:

f(n) = f(n - 1) + (n - 1)
f(0) = 0
n >= 0

我已经在 A 列上声明了,并且需要B 列上n的结果。f(n)

我正在尝试找到该函数等效的 Excel 公式。

示例结果:

A | B
--+--
0 | 0

或者:

A | B
--+--
1 | 0

或者:

A | B
--+--
4 | 6

但从来没有

A | B
--+--
0 | 0
1 | 0
2 | 1
...

最大的问题是,我无法模拟 的值f(n - 1)。因此,像上面的例子一样引用前一行是无效的。我几乎可以肯定答案很简单,我只是找不到它。

答案1

这有帮助吗?

f(n) = sum of all positive integers less than n

它应该,特别是在一些算术

好的,鉴于人们现在用用户定义的函数发布答案,这就是答案

f(n) = (n-1)n/2

更新:对于那些看不出该公式没有使用任何其他行的信息的人(请参阅下面 Stan R. 的评论),我稍微打乱了顺序:

0 =(A1-1)*A1/2 0
 9 =(A2-1)*A2/2 36
 2 =(A3-1)*A3/2 1
 4 =(A4-1)*A4/2 6
 6 =(A5-1)*A5/2 15
 5 =(A6-1)*A6/2 10
10 =(A7-1)*A7/2 45
 8 =(A8-1)*A8/2 28
 3 =(A9-1)*A9/2 3
 7 =(A10-1)*A10/2 21
 1 =(A11-1)*A11/2 0
...

答案2

您需要以递归方式解决它吗?这当然不是解决问题的最佳方法:

将 1 至 10 的数字相加

   1 + 2 + 3 + 4 + 5
+ 10 + 9 + 8 + 7 + 6
  --  --  --  --  --
  11 +11 +11 +11 +11 = 55

或者,正如总结的那样,(n+1)(n/2)当 n=10 时,这显然是11 x 5

答案3

可以重新表述该函数以消除递归。

让我们举几个例子……

f(4)=1+2+3=6
f(5)=1+2+3+4=10
f(6)=1+2+3+4+5=15

这里有一个模式:

f(4)=1+2+3=6=4*1.5
f(5)=1+2+3+4=10=5*2
f(6)=1+2+3+4+5=15=6*2.5

这意味着我们可以将该函数推广到f(n)=1+2+...+n=n*(n-1)/2n>1 以及f(n)=0其他情况。

然后可以将生成的 Excel 公式写成=IF(A5>1;A5*(A5-1)/2);0),假设 A5 包含 n。

显然,如果您的公式比您给出的公式更复杂,它可能会变得更加困难,并且只需编写一个用户定义函数(如Scott建议的那个),然后使用它可能会更快更容易。

答案4

不确定如何使用纯公式来实现。一种选择是使用 UDF

Public Function f(n As Integer) As Integer
    If (n = 0) Then
        f = 0
        Exit Function
    End If

    If (n > 0) Then
        f = f(n - 1) + (n - 1)
    End If
End Function

然后公式就是=f(A1)

相关内容