求杨辉3角的数列算法,该怎么解决

求杨辉3角的数列算法
求杨辉3角的数列算法~~

1
1,1
1,2,1
1,3,3,1
..

排成数列 1,1,1,1,2,1,1,3,3,1,1,4,6,4,1,...
那么,这个数列通项An怎么计算?


各位大哥给个算法就行,不用给代码,哈哈,比比看的最高效~~嘻


------解决方案--------------------
Delphi(Pascal) code

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
close;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
str:string;
i,j,t,n:integer;
f:array[1..10,1..10] of integer; 
begin
str:=chr(10)+chr(13);
for i:=1 to 10 do
begin
f[i][i]:=1;
f[i][1]:=1;
end ;
for i:=3 to 10 do
for j:=2 to i-1 do

f[i][j]:=f[i-1][j-1]+f[i-1][j];

for i:=1 to 10 do
begin
for j:=1 to i do
form1.Canvas.TextOut(35*j,35*i,inttostr(f[i][j]));
form1.Canvas.TextOut( 50*j,50,str);
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
close;
end;

end.

------解决方案--------------------
数列:1,1,1,1,2,1,1,3,3,1,1,4,6,4,1,...
求第N个数的值

方案:
由二项式定理:T(r+1)=C(r,n)(a^(n-r))b^r
【ps:C(r,n)表示 组合 C的n取r,公式为C(r,n)=n!/(r!(n-r)!),n!表示求n的阶乘】
因为只求系数,所以T(r+1)=C(r,n)

公式有了,只需要把N转换为n(表示杨辉三角的层数)、r+1(表示所求数在该层的位置)
只需要做一个循环,用N依次减去1、2、3、……直到N<0为止
循环的次数-1=n,得到的那个负值+n=r
这样就可以求得数列的第N项了
例如:N=13时,对应的数为 杨辉三角第5层1、4、6、4、1的第3个数"6"
先用循环将N转换为n和r
N-1-2-3-4-5=-2
循环了5次,则n=5-1=4
得到的负值为-2,则r=-2+4=2
再将n和r带入公式算出T(r+1)=4!/(2!(4-2)!)=4*3*2*1/(2*1*2*1)=6
圆满解决