1

Does anyone know what the runtime of set! and begin is in Scheme/Racket?

I think set! is constant but I'm not sure.

4

4 回答 4

2

set!操作只是将一个值关联(“绑定”)一个符号,这肯定是O(1)任何自尊的编程语言。寻找绑定可能不一定O(1)取决于实现细节,但这是完全不同的事情(我不知道 Racket 的细节)。

关于begin,这是一个排序形式,应用它本身没有成本,只有它的内容(它包含的表达式)将决定它的时间复杂度。同样的事情set!,赋值的部分可能需要一些时间来评估,但set!操作本身是O(1)

于 2012-10-27T21:22:45.630 回答
2

一个警告:设置!并且开始都有子表达式。如果其中任何一个需要很长时间,那么就对集合进行评估!(或开始)也会。

于 2012-10-27T21:59:06.547 回答
2

放!是 O(1)。Scheme 和其他语言在这方面没有区别。

于 2012-10-27T21:10:51.763 回答
1

如果您担心 的性能set!,请记住避免突变可以更快。请参阅球拍指南:突变和性能

于 2012-10-31T02:31:16.520 回答