请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

这里对于fibonacci的调用有点不明白

图片描述第一个问题 :我第二个调用cost 里面先用引用的方法创建 val fib = ::fibonacci 然后再去调用 println(fib.invoke().invoke()) 和第一个调用cost得到的结果是一样的 ,但是 println(result.invoke()) 结果不一样 不是很明白 为啥会这样?
第二个问题: 在第一个调用cost的时候,为啥 fib()的值不是一直是0 ?

正在回答 回答被采纳积分+3

1回答

bennyhuo 2021-03-28 21:41:34

你这前后两个 fib 变量的含义不一样。最好做下区分。

第一个 fib 是 fibonacci 函数调用的返回值(也是一个函数,用于返回下一个斐波那契数列的值)

第二个 fib 是 fibonacci 函数的引用

因此你上面的代码当中,第一个 fib 等价于 result。

第二个 cost 当中 fib.invoke().invoke(),相当于每次通过第一个 invoke 拿到了一个斐波那契数列生成器(等价于第一个 fib),然后再 invoke 拿到斐波那契数列的第一个值。

你单步调试一下吧。

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信