不要用阶乘,直接算
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)最后需要那一个就取计算出来的值.
程序就不写了,自己按照这个思路就能够做出来