什么是数列
按照一定顺序排列的一列数称为数列。
数列中的每个元素称为项。
常见的数列种类有:
项数有限的数列称为有穷数列,反之为无穷数列。等差数列等等。
通项公式
数列可以表达为:{ f(1),f(2),f(3),....f(n) } 其中的1,2,3...n就是数列的index,也就是序号。
如果数列{a}的第n项与序号n之间的关系可以用一个公式来表达,那么这个公式称为这个数列的通项公式。当然,有些数列是没有通项公式的。
例如,数列 1,3,5,7,9....的通项公式就是f(n)=2n-1.
而著名的Fibonnaci数列的通项公式就是:F(n)=F(n-1)+F(n-2)
如果我们采用递归算法来计算F(n),可以看到,其实就是直接应用了通项公式。
public static long Fib1(int n){
if (n==1)
return 1;
if (n==2)
return 2;
return Fib1(n-1)+Fib1(n-2);
}
凡是通项公式是F(n)=2n这样的项值仅和序号相关的数列,都可以使用代码简单计算。
凡是通项公式是F(n)=F(n-1)+F(n-2)这样的需要递推的数列,则都可以使用递归解决。但是由于递归的效率很低,一般会采取其他一些更巧妙的算法。因为递归算法其实对时间和空间的消耗都很大。
等差数列和等比数列
等差数列:
即这样的数列: 1,4,7,10,13....规律是从第二项开始,每一项的值减去前一项的值,是一个固定的数值。这个值称为公差,这个例子的公差为3.
通项公式:f(n)=f(1)+d(n-1) 。其中d为公差。
前n项和为: n(f(1)+f(n))/2 这个公式是从著名的高斯算法来的。
等比数列:
即这样的数列: 1,2,4,8,16....规律是从第二项开始,每一项的值和前一项的值的比,是一个固定的数值。这个值称为公比,这个例子的公差为2.
通项公式:f(n)=f(1)*q的(n-1)次幂。其中q为公比。
前n项和为: f(1)(1-q的n方)/(1-q)