Picopala算法实现

时间:2015-11-18 12:01:16

标签: algorithm recursion

我有这个递归定义:

enter image description here

对该函数的第一次调用是picopala(v.length-1, v)v是一个整数数组。 我需要将该定义转换为迭代算法,但我不能,我不知道如何实现它。那么,拜托,有人可以帮助我吗?

2 个答案:

答案 0 :(得分:1)

要创建一个迭代解决方案,让我们“转过身来”并从零开始工作。

让我们将picopala(j, V)的值存储在P[j]

P[0] = V[0]
P[1] = 2*V[1]
P[2] = P[0] * P[1] + V[1]
P[3] = P[1] * P[2] + V[2]
P[4] = P[2] * P[3] + V[3]
...
P[n] = P[n-2] * P[n-1] + V[n-1]

现在很容易实现循环。

答案 1 :(得分:0)

Recursion非常适合这里。

假设你可以使用递归,你可以试试这样的

public int picopala(int length,int[] arr)
    {
        //base conditions
        if(length == 0)
            return arr[0];
        if(length == 1)
            return arr[1]*2;

        return picopala(length-2,arr)*picopala(length-1,arr)+arr[length-1];

    }