for(i=0; i < n; i * = 25)
据我所知,复杂性无法确定。 迭代永远不会进行,因此循环基本上变为无限循环。
答案 0 :(得分:0)
正如评论中已经说过的那样,循环仅终止于n ≤ 0
。对于每个其他n
,程序不会终止。
如果你有一些永不停止的东西,我认为你不想谈论复杂性,因为复杂性被用来了解大输入的运行时间和比较算法。
你甚至不能说你拥有的代码是算法,因为算法的定义经常包含,它必须终止。
如果你需要写下大字的东西,有很多方法可以看看。
c
f(n)
找不到常数∞ < c⋅f(n)
和函数n < ∞
(多项式或指数)O(∞)
,所以它应该是n → 2n
这得到了big-o。O(1)
你看,执行的操作数没有改变,所以也许T(n) = T(n-1)
也可以。 T(1)
支持的。最后,您必须定义T(1) = O(1)
是什么。复杂性与小的或特定的输入无关,因此也许可以定义{{1}}。 两种方式都说,运行时间不依赖于输入,但第二种主要是哲学的,第一种应该是首选的。
但正如我在开头所说:你不想谈论永不终止的代码的复杂性(或仅针对无关的案例)。