如何解决条件线性递归? 例如,
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)时间内计算,但如何处理两个不同的重复?
答案 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
现在分别解决两次重复。我将你的公式互相替换,目的是使偶数和奇数指数仅取决于相同的奇偶校验。