当N非常大时解决递归关系

时间:2018-12-04 16:17:43

标签: algorithm

recurrence时如何解决0 <= N <= 1,000,000,000关系。

对于示例

like  d[N] = d[N-1] + d[N-2] * 3d[N-3]

我尝试使用DPmemorization解决问题,但是N范围太大而无法制作数组。输入N是随机的。

有没有其他算法可以解决这个问题?

1 个答案:

答案 0 :(得分:2)

您只需要记住3个先前的值。因此,制作一个大小为3的数组,并将彼此覆盖,以进行进一步处理。

int[] memo = new int[3];

// some initializations etc

for(....){
    int new_value = memo[2] + memo[1] * 3 * memo[0];
          memo[0] = memo[1];
          memo[1] = memo[2];
          memo[2] = new_value;
}

// further processing