首页 > 解决方案 > Call by Name 或 Call by Value 在大 O 表示法中是否有效?

问题描述

通过值调用或按名称调用评估代码的方式是否会在 Big O 表示法中产生影响?为什么或者为什么不?

标签: scala

解决方案


是的,因为每次访问时都会评估按名称参数。

例如,采用一个方法,O(n)因为它会评估其参数n时间,而一个涉及计算的值也是O(n).

如果参数是按值传递的,那么这是O(n)因为参数是评估1时间和访问n时间。

如果参数是按名称传递的,那么这是O(n^2)因为参数被评估了n多次,并且每次评估都是O(n).


推荐阅读