我想解决递归关系F(n,m)= F(n-1,m)+ F(n,m-1)+ 1?

时间:2014-04-22 09:41:30

标签: recursion

我想知道如何解决2个变量中的递归关系。我想解决下面的关系:

F(n,m) = F(n-1,m) + F(n,m-1) + 1

初始条件:

F(m,0) = m

F(0,n) = n

F(0,0) = 0

2 个答案:

答案 0 :(得分:1)

F(n,m)
{

  if (n==0)&&(m==0)
     return 0
  else if (n==0)
     return m
  else if (m==0)
     return n
  else
   return F(n-1,m) + F(n,m-1) + 1
}

答案 1 :(得分:0)

只有参数(≦n,≦m)出现,可以排除n或m为0,所以如果你能保持n×m的表是最佳复杂度:O(n.m)。

有人看到F(n - 1,m - 1)都被称为F(n - 1,m)和F(n,m - 1),所以天真的解决方案具有更高的复杂度。 / p>

不想破坏寻找算法的乐趣,只有一些提示:

F(n, m) = F(m, n)   so you may use n ≦ m.

(table, result) = F'(table, n, m)    caching of results in recursive function

我个人有时喜欢从迭代的非功能性过程开始填充表格,从0开始。然后将其转换为功能表示法。对于复杂性,迭代过程已经足够了。