在 C++ 中查找给定递推关系的第 n 项
概念
假设 bn 是一个数字序列,由递推关系 b1=1 和 bn+1/bn=2n 表示。我们的任务是确定给定 n 时 log2(bn) 的值。
输入
6
输出
15
解释
log2(bn) = (n * (n - 1)) / 2 = (6*(6-1))/2 = 15
输入
200
输出
19900
方法
bn+1/bn = 2n
bn/bn-1 = 2n-1
.
.
.
b2/b1 = 21,我们将以上所有式子相乘以得到
(bn+1/bn).(bn/n-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
示例
// C++ program to find nth term of // a given recurrence relation #include <bits/stdc++.h> using namespace std; // Shows function to return required value int sum(int n1){ // Now get the answer int ans1 = (n1 * (n1 - 1)) / 2; //Now return the answer return ans1; } // Driver program int main(){ // Get the value of n // int n = 6; int n = 200; // Uses function call to print result cout << sum(n); return 0; }
输出
19900
广告