/***
**sql 函数实现从m个数选n个数的不同组合数目
select dbo.fn_combin(9,7)
思路:1.)C(M,N)/C(M-1,N-1)=(M-N+1)/N可以利用递推
* 2.)C(M,N)=C(M,M-N),当N>M/2时,N=M-N可以优化程序
**/
ALTER function [dbo].[fn_combin]
(
@ m int, --球的个数
@n int --选择个数
)
returns int
as
begin
declare @i int,@num int
set @i=1
set @num=1
if @n>@m/2
set @n=@m-@n
while @i<=@n
begin
set @num=@num*(@m-@i+1)/@i
set @i=@i+1
end
return @num
end