Excel 幂查询闭包和递归;这方面的教科书?

Excel 幂查询闭包和递归;这方面的教科书?,excel,recursion,closures,powerquery,m,Excel,Recursion,Closures,Powerquery,M,powerquerym语言中的闭包可以是递归的吗 函数可以是递归的。我将函数查询命名为Fibonacci,定义为 (X) => let Fib = if X <= 1 then 1 else X + Fibonacci(X - 1) in Fib 由于未找到错误“消息为”Fib,您是否忘记导入模块 还有别的办法吗?或者,如果我需要一个递归函数,它是否必须作为它自己的查询而存在 元查询——在M中,是一个本地定义的函数,如 Fib = (X)=> if X &l

powerquerym语言中的闭包可以是递归的吗

函数可以是递归的。我将函数查询命名为Fibonacci,定义为

(X) => 
let
    Fib = if X <= 1 then 1 else X + Fibonacci(X - 1)
in
    Fib
由于未找到错误“消息为”Fib,您是否忘记导入模块

还有别的办法吗?或者,如果我需要一个递归函数,它是否必须作为它自己的查询而存在

元查询——在M中,是一个本地定义的函数,如

Fib = (X)=> if X <= 1 then 1 else X + Fib(X - 1)

Fib=(X)=>如果X如果你想递归调用一个函数,你需要添加一个@作为所谓的“作用域操作符”,所以这段代码是可以的(我刚刚在你的代码中将@添加到“Fib”中):

let

FIB=(x)=>如果X,如果你对我的前一个问题的回答如此友好,我会考虑对这个新问题作出反应。我仍然在学习如何处理StackOverflow;很抱歉,我没有及时回复。谢谢Marcel,包括代码修复和参考资料。你知道,我刚开始学习M时就下载了语言规范,但当我试图理解它时,我已经不知所措了。(太多了,太快了。)在你的便条之后,我把它挖出来,读你指的地方。这对我来说现在更有意义了。
1    1
2    Error
3    Error
5    Error
Fib = (X)=> if X <= 1 then 1 else X + Fib(X - 1)
let
    Fib = (X)=> if X <= 1 then 1 else X + @Fib(X - 1),
    Source = Table.FromRecords({[X=1],[X=2],[X=3],[X=5]}),
    UseIntFib = Table.AddColumn(Source, "Fib", each Fib([X]) )
in
    UseIntFib