问题描述
我用 Monkey PL 编写了一个简单的程序(请参阅 https://interpreterbook.com/ 中的规范):
let fib = fn(x){
if(x>-1){
if(x<2){return x}
fib(x-1)+fib(x-2)
}
}
let max = fn(x,y){if(x>y){x} else {}}
let simple_faulhaber = fn(x){
if(x==0){
return 0
}
if(x>0){
x + simple_faulhaber(x-1)
}
}
在 repl 中测试我的函数时,似乎一切正常:
>> fib(13)
233
>> max(3,2)
3
>> simple_faulhaber(13)
91
max(simple_faulhaber(13),fib(13))*2
但是,当我在 repl 中要求对 max(simple_faulhaber(13),fib(13))*2
求值时,求值器会恐慌:
>> max(simple_faulhaber(13),fib(13))*2
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x20 pc=0x4b7d57]
谁能给我解释一下,为什么?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)