scala - Call by Name 或 Call by Value 在大 O 表示法中是否有效?
问题描述
通过值调用或按名称调用评估代码的方式是否会在 Big O 表示法中产生影响?为什么或者为什么不?
解决方案
是的,因为每次访问时都会评估按名称参数。
例如,采用一个方法,O(n)
因为它会评估其参数n
时间,而一个涉及计算的值也是O(n)
.
如果参数是按值传递的,那么这是O(n)
因为参数是评估1
时间和访问n
时间。
如果参数是按名称传递的,那么这是O(n^2)
因为参数被评估了n
多次,并且每次评估都是O(n)
.
推荐阅读
- github - 在 PR 合并后,有没有办法在另一个 repo 中的 PR 上触发 CircleCI 工作流程?
- sql - 在 PostgreSQL 中如何检索具有特殊字符和字母的列
- javascript - 使用 Javascript 显示每个按钮单击的 HTML 内容
- java - 将 Qute TypeSafe 模板与 Kotlin 一起使用时出现 java.lang.UnsatisfiedLinkError
- c++ - 在 Windows 上使用 _vscwprintf 处理 utf-8 编码字符串时失败
- python - 如何从 Celery/Django 流式传输 IOT 信号?
- google-apps-script - 从 Google 表格中的某个范围内查找值
- powershell - 即使指定 ExecutionPolicy 也无法运行 powershell 脚本
- c++ - 复制省略和普通可复制类型
- memory-management - 使用 ctypes 在 Python 中封装 Fortran 模块