gpt4 book ai didi

java - 以下函数的大符号是什么

转载 作者:搜寻专家 更新时间:2023-10-31 20:12:13 25 4
gpt4 key购买 nike

我无法找出这两个函数的最小上界。

我认为 ex1 有 O(log_3(n)) 而 ex5 应该有 O(n!)。但我对此并没有真正的信心,因为我还没有真正理解这个主题。

public int ex1 ( int n ) {
int r = 0 ;
for ( int i = 1 ; i < n ; i++) {
r += n ;
n = n / 3 ;
}
return r ;
}
public static int ex5 ( int n ) {
int r = 1 ;
for ( int i = 0 ; i < n ; i ++) {
r += ex5 ( n - 1 ) ;
}
return r ;
}

最佳答案

ex5的输出值对应sequence A000522 at oeis.org , 随着 a(n) = Sum_{k=0..n} n!/k! 增加(或 n! 到第一个近似值)。由于这个函数的编码方式很糟糕,这等于函数的时间复杂度。

更好的算法如下:

public static int ex5 ( int n ) {
return (n) ? 1 + n * ex5(n-1) : 1;
}

这显然是 O(n^2) O(n) (抱歉,已经晚了,我需要 sleep !)

编辑: 正如其他人所说,ex1 的复杂度为 O(log_3(n)),或简单为 O(log(n)),因为 log_3(n) = log(n )/log(3), log(3) 在任何基数中都是常数。

关于java - 以下函数的大符号是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20318198/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com