【发布时间】:2020-04-01 17:42:13
【问题描述】:
for(i=1;i<=n;i=pow(2,i)) { print i }
这个的时间复杂度是多少?
kth 值的近似值 i 将是 pow(2,(pow(2,pow(2,pow(2, pow(2,pow(2,...... k times)))))))
上面的值,比如说kth value of i < n,如何解决k。
【问题讨论】:
-
这是一个名为 tetration 的函数的实例。没有使用我们最熟悉的函数的解决方案,因此必须定义一个新函数:superlogarithm, or slog。因此答案是这个复杂度是 O(slog2 n)。
-
感谢您向我介绍此功能。如果您可以将此作为答案发布,很高兴接受它作为答案,因为这正是我寻找的答案。
-
请注意,除非 i 大于 63,否则不应使用
pow(2,i)。请改用1 << i -
@JamesReinstateMonicaPolk 在您的评论中很好地捕捉和有效信息,但由于错误的结束条件而不是四分法,所以不需要
slog... -
@phuclv 2^63 确实是一个很大的数字,但经过 5 次迭代后达到了... :-)
标签: algorithm math time-complexity exponentiation