递归法:一个实数数列共有N项,已知ai=(ai-1 - ai+1) / 2 + d

题目描述:一个实数数列共有N项,已知ai = (a_i-1 - a_i+1) / 2 + d, (1 < i < N)(N < 60)键盘输入N,d, a1, an, n, 输出 an。

进行简单的代换

2ai - 2d = ai-1 - ai+1 ==>
ai+1 = ai-1 - 2ai + 2d ==>
ai = ai-2 - 2ai-1 + 2d  2 <= i < N (N < 60)

就变成了简单的斐波那契数列的变形嘛。

以下为代码实现:

#include 
#include 
using namespace std;
int ak(int N, int d, int a1, int a2, int n) {
    int a[60];
    a[0] = a1;
    a[1] = a2;
    for(int i = 2; i < 60; i ++)
        a[i] = a[i - 2] - 2 * a[i - 1] + 2 * d;
    cout << a[n] << endl;
}
int main()
{
    int N, d, a1, a2, n;
    cin >> N >> d >> a1 >> a2 >> n;
    ak(N, d, a1, a2, n);
    return 0;
}

 

你可能感兴趣的:(递归法:一个实数数列共有N项,已知ai=(ai-1 - ai+1) / 2 + d)