|
理解lambda函数的递归过程确实需要一些时间,来简单解析这个例子。
例1:求123456789这个数的和
公式定义为:
=LAMBDA(n, IF(n=0, 0, MOD(n,10) + th(TRUNC(n/10))))
第一次循环:
n = 123456789
IF(n=0, 0, MOD(n,10) + th(TRUNC(n/10)))
n 不等于0,所以执行 MOD(n,10) + th(TRUNC(n/10))
MOD(123456789, 10) = 9
TRUNC(123456789 / 10) = 12345678
所以第一次循环的结果是 9 + th(12345678)
第二次循环:
n = 12345678
IF(n=0, 0, MOD(n,10) + th(TRUNC(n/10)))
n 不等于0,所以执行 MOD(n,10) + th(TRUNC(n/10))
MOD(12345678, 10) = 8
TRUNC(12345678 / 10) = 1234567
所以第二次循环的结果是 8 + th(1234567)
继续循环,直到 n = 0:
每次循环都会取 n 的最后一位数字,然后递归调用 th 函数处理去掉最后一位的 n。
最终结果是所有数字的和。
例2:求10以内和的公式
公式定义为:
=LAMBDA(x, n, IF(n=1, x, dg(x+1, n-1) + x))
第一次循环:
x = 1,n = 10
IF(n=1, x, dg(x+1, n-1) + x)
n 不等于1,所以执行 dg(x+1, n-1) + x
dg(1+1, 10-1) + 1 即 dg(2, 9) + 1
第二次循环:
x = 2,n = 9
IF(n=1, x, dg(x+1, n-1) + x)
n 不等于1,所以执行 dg(x+1, n-1) + x
dg(2+1, 9-1) + 2 即 dg(3, 8) + 2
继续循环,直到 n = 1:
每次循环 x 增加1,n 减少1。
当 n = 1 时,返回 x。
最终结果是所有 x 的和。
|
|