我是 J 的新手,我一直在尝试创建一个斐波那契函数作为练习(始终是我在学习语言时创建的第二个函数)。我只是无法弄清楚我这样做的方式到底出了什么问题。我试图将其定义为默认,但如果参数大于 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.'
所以,我要求有人解释我在这里做错了什么。