Python中求解给定递推关系的第n项
假设我们有一系列数字称为bn,它用递推关系表示,例如b1=1且bn+1/bn=2n。我们需要找到给定n的log2(bn)的值。
因此,如果输入为6,则输出为15,因为log2(bn) = (n * (n - 1)) / 2 = (6*(6-1))/2 = 15
我们可以通过如下方式解决此关系:
bn+1/bn = 2n
bn/bn-1 = 2n-1
…
b2/b1 = 21,如果我们将以上所有式子相乘,我们可以得到
(bn+1/bn).(bn/bn-1)……(b2/b1) = 2n + (n-1)+……….+1
所以,bn+1/b1 = 2n(n+1)/2
因为1 + 2 + 3 + ………. + (n-1) + n = n(n+1)/2
所以,bn+1 = 2n(n+1)/2 * b1;我们假设初始值b1 = 1
所以,bn+1 = 2n(n+1)/2
用(n+1)替换n后,我们得到:
bn = 2n(n-1)/2
两边取对数,我们得到:
log2(bn) = n(n-1)/2
示例
让我们来看下面的实现以更好地理解:
def add_upto_n(n): res = (n * (n - 1)) / 2 return res n = 6 print(int(add_upto_n(n)))
输入
6
输出
15
广告