私は J の初心者で、演習としてフィボナッチ関数を作成しようとしています (言語を学習するときに常に 2 番目に作成する関数です)。自分のやり方で何が間違っているのか正確にはわかりません。私は暗黙のうちにそれを定義しようとしましたが、引数が 1 より大きい場合はハングします。
fib =: [ ` (($: (]-1)) + ($: (]-2))) @. (>&1)
また、明示的に作成しようとしましたが、うまくいきました。
fib =: 3 : 'if. y>1 do. (fib (y-1)) + (fib (y-2)) else. y end.'
3 を 13 に置き換えて、暗黙のうちに作成しようとしましたが、エラーがスローされました。
fib =: 13 : 'if. y>1 do. (fib (y-1)) + (fib (y-2)) else. y end.'
|spelling error
| if. y>1 do. (fib (y-1)) + (fib (y-2)) else. y end.
| ^
| fib=: 13 :'if. y>1 do. (fib (y-1)) + (fib (y-2)) else. y end.'
だから、私がここで間違っていることを正確に説明してくれる人を求めています。