二项式定理 用pascal怎么算?
发布网友
发布时间:2022-07-01 20:11
我来回答
共2个回答
热心网友
时间:2022-07-01 21:40
不要用阶乘,直接算
c(m,n)=n*(n-1)*……*(n-m)/m*(m-1)*……*1
程序计算的时候为了避免乘积会越界,必须采取一些措施
如下:
c(m,n)=a/b
a=n*(n-1)*……*(n-m)
b=m*(m-1)*……*1
在得到累乘的积a和b的过程中判断a能否被b中的项整除,如果能得话就将它们除掉,在用手计算的时候就叫做约分。这样做的代价是牺牲时间。
还有一种是牺牲空间为代价
那就是记录下C(1,1)~C(m,n)
先算得C(i,j),记录下他的值,然后计算C(i+1,j),和C(i,j+1)然后记录下来,一直计算到C(m,n)最后需要那一个就取计算出来的值。
程序就不写了,自己按照这个思路就能够做出来
热心网友
时间:2022-07-01 22:58
var
a:array[0..1000] of longint;
i,j,n:longint;
begin
write('n=?');
readln(n);
fillchar(a,sizeof(a),0);
a[1]:=1;
for i:=1 to n do
begin
for j:=1 to i do write(a[j],' ');
for j:=i+1 downto 1 do a[j]:=a[j]+a[j-1];
writeln;
end;
end.
其实二项式就是杨辉三角形