如何解决条件线性递归?

时间:2014-09-22 07:19:52

标签: algorithm recurrence

如何解决条件线性递归? 例如,

f[1]=m;  
f[i]=f[i-1]*m; if i is even
f[i]=(f[i-1]-2)*2 +2 if i is odd  

计算f [n]
如果它只是一个简单的线性递归,f [n]可以在O(log N)时间内计算,但如何处理两个不同的重复?

1 个答案:

答案 0 :(得分:2)

f[i] = (f[i - 2] * m - 2) * 2 + 2 if i is odd
f[i] = ((f[i - 2] -2) * 2 + 2) * m if i is even

现在分别解决两次重复。我将你的公式互相替换,目的是使偶数和奇数指数仅取决于相同的奇偶校验。