等差数列:如果一个数列从第二项起,每一项a[n]与它的前一项a[n-1]的差等于同一个常数,这个数列就叫做等差数列。而这个公差用d表示。
例如:1,3,5,7,9,.....a[n]-a[n-1]=d=2
通项公式推导:
a2-a1=d;a3-a2=d;a4-a3=d……a[n]-a[n-1]=d,将上述式子左右分别相加,
得出an-a1=(n-1)*d→a[n]=a[1]+(n-1)*d
使用递归算法则可以简单地理解为 a[n]=a[n-1]+d
前n项和公式为:Sn=a1*n+[n*(n-1)*d]/2 得出 Sn=[n*(a1+an)]/2
使用递归算法可以理解为 S[n]=S[n-1]+a[n] 比起数学归纳更简洁明了
下面用c++代码实现输出数列的各项值以及求和 a1+a2+a3+....an=Sn
#include<iostream>
using namespace std;
int f(int a, int d, int n) //求第n项
{
if(n==1) return a;
return f(a,d,n-1)+d;
}
int s(int a, int d, int n) //求前n项的和
{
if(n==1) return a;
return s(a,d,n-1)+f(a,d,n);
}
int main()
{
int a,d,n,i;
cin>>a>>d>>n;
for(i=1; i<n; i++) //逐项打印加号
cout<<f(a,d,i)<<"+";
cout<<f(a,d,i)<<"="<<s(a,d,n); //最后一项跟等于号
}
输入:第一项值,公差,项数
输出结果:a1+a2+a3+....an=Sn