假设函数F是递归的,并且F(k)的运行时间是T(k)。
F(k)调用F(k-1)一次,并执行以O(n!)
运行的运算F(0)是基本情况,它以恒定时间运行。
在我的诚实意见中,
我认为T(n) = T(0) + (1! + 2! + ... + n!)
如此
它将是T(n) <= (n! + n! + ... + n!) for n >=1
。
因此O((n+1)!)
。
但我无法确定这是否足够。 这是一个足够的分析?我有什么方法可以测试吗? (这个算法不太实用,但有好奇心。)
答案 0 :(得分:4)
对于阶乘的总和,没有一个很好的封闭形式(exact answer很乱)。
但是,我们可以使用归纳来证明0! + 1! + 2! + ... + n! ≤2n!:
所以你的复发是从2n以上限制的!并且从下面通过n !,意味着你能得到的最严格的约束就是说递归求解为Θ(n!)。