如何在Google Sheets公式中实现递归?
在Google Sheets原生公式中实现Lambda递归的方法
要让Google Sheets的Lambda函数实现递归,核心是在LET函数内部将Lambda自身定义为可引用的变量,让函数能够调用自己。
经典递归示例:计算阶乘
递归阶乘的逻辑是:n! = n × (n-1)!,终止条件为0! = 1,对应的公式实现如下:
=LET( fact, LAMBDA(n, IF(n=0, 1, n * fact(n-1))), fact(5) )
这里fact这个Lambda函数在LET的作用域内可以被自身引用,当输入的n等于0时触发终止条件返回1,否则递归调用自身计算n-1的阶乘并完成乘法运算。
对比你的尝试
你之前的代码只是重复调用Lambda函数,但函数本身没有引用自身,属于函数复用而非递归。只有让Lambda能访问到自身的定义,才能实现自我调用的递归逻辑。
另一个实用示例:递归求和数组
下面的公式会递归地对数组元素求和,直到数组仅剩一个元素时返回该值:
=LET( sum_recur, LAMBDA(arr, IF(ROWS(arr)=1, arr, INDEX(arr,1) + sum_recur(DROP(arr,1)))), sum_recur(A1:A5) )
注意事项
Google Sheets对递归深度有上限(约100层),如果递归深度超出限制会触发错误,所以务必确保终止条件能被正确触发,避免无限递归。
内容的提问来源于stack exchange,提问作者doubleunary
相关产品推荐
相关产品推荐

