2017-10-18 99 views
4

在Q,爲over操作/常見的例子就是implementation of fibonacci sequenceq - 遞歸與/

10 {x,sum -2#x}/ 1 1 

這的確是打印頭10張Fibonacci數,但在該定義的問候沒有意義over操作者在此whitepaper(第8頁)

隨着兩個參數,第二個是一個列表,該函數是 稱爲與左參數作爲其第一個參數和第首先將 元素的正確參數作爲第二個參數。接下來,調用 函數,將前一次迭代的結果作爲 第一個參數,將第三個元素作爲第二個參數。對於列表的其餘元素, 進程以這種方式繼續。

因此在上面的斐波納契例如,在第一次迭代的功能將與[10;1]稱爲(「第一參數和第二參數的第一項」),這將已經給出不正確的結果。

我的實現與定義行(和作品)

1 1 {[l;c] l,sum -2#l}/til 10 

,但我不喜歡它,因爲該參數c從未使用過。

第一個例子如何與定義一致?

感謝您的幫助

回答

0

/有多種形式,這裏描述:https://code.kx.com/q/ref/adverbs

這裏所使用的「重複」的具體形式 - https://code.kx.com/q/ref/adverbs/#converge-repeat

這裏的斐波納契功能是一元,即採用一個參數(x)的

在這種形式中,/將用提供的參數(即1的列表)運行函數,然後用該調用的結果運行函數,然後再用該調用的結果運行,直到迭代次數達到10(左邊的參數爲/)

如果函數是二元函數(即,需要兩個參數)

希望這有助於

喬納森

AquaQ分析

1

左參數是該實施例中被視爲一次迭代整數原子(重複)。

請參閱code.kx.com上的coverge-repeat可能會進一步說明。