递归法:一个实数数列共有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 <iostream>
#include <cmath>
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;
}

 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值