如何为此算法设置和解决此递归关系?

时间:2014-09-10 07:29:57

标签: algorithm recursion

Recursive R(n)
if n==1 return 1;
else return R(n-1)+n*n*n

如何为此算法设置和解决此递归关系(n个多维数据集的总和)?

2 个答案:

答案 0 :(得分:3)

表示S(n)第一个n多维数据集的总和S(n)n必须是S(n) = an^4+bn³+cn²+dn. 中第四度的多项式,让

S(0)= 0

这是因为

1)S(n)-S(n-1),所以没有独立的术语,

2)当计算时必须等于S(n)-S(n-1) = a(n^4-(n-1)^4)+b(n³-(n-1)³)+c(n²-(n-1)²)+d(n-(n-1)). 时,你会得到一个三次多项式,取消四次项:

a(4n³-6n²+4n-1)+b(3n²-3n+1)+c(2n-1)+d = n³.

开发和简化,

n³:  4a        =1
n²: -6a+3b     =0
n:   4a-3b+2c  =0
1:   -a +b -c+d=0

让我们确定系数:

a=1/4
b=1/2
c=1/4
d=0.

解决这个三角形系统很困难:

S(n) = (n^4+2n³+n²)/4 = n²(n+1)²/4.

最后

使用Faulhaber formula可能更简单,或者只考虑一个总和就像一个整数,n^4/4的总和约为{{1}}。

答案 1 :(得分:0)

首先,如果n == 1,你应该返回1.是的,这个递归函数计算1 + 2 ^ 3 + 3 ^ 3 + ... + n ^ 3。我们怎么知道?

好吧,举个例子,比如n = 5;

  • R(5)返回R(4)+ 5 ^ 3
  • R(4)返回R(3)+ 4 ^ 3
  • ....
  • R(2)返回R(1)+ 2 ^ 3
  • R(1)返回1

如果你把它们加起来=> R(5)返回5 ^ 3 + 4 ^ 3 + .. + 2 ^ 3 + 1。