2017-10-18 15 views
4

有する再帰、overオペレータ/ための一般的な図は、これが実際に第10フィボナッチ数を印刷しかしの定義の点で意味をなさないimplementation of fibonacci sequenceQ - Qで/

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

ありますこのwhitepaper(ページ8)は、2つの引数リストである第2の一方と

overオペレータは、関数は、その最初のパラメータと番目として左引数と 呼ばれ最初の の要素を2番目のパラメータとして使用します。次に、 関数が呼び出され、以前の反復の結果が の第1パラメータとして、第3の要素が第2のパラメータとして呼び出されます。 プロセスは、リストの残りの要素についてこのように続けられます。

したがって、上記のフィボナッチの例では、最初の反復で関数が既に誤った結果を与えるであろう[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を参照してください。