MATLAB阶乘的编程问题

如下图片,要把3-8写进代码里,应该怎么写这部分代码
正常的排列组合代码不能计算带非整数,而r的值在(0,1),所以不能用一般的阶乘公式

img

自己定义一个函数即可:

func=@(x)(mod(x,1)==0)*factorial(round(x+.1))+(mod(x,1)~=0)*prod(x:-1:0);

func(3)

func(3.1)

3.1*2.1*1.1*0.1

可以发现func(3.1)和3.1 * 2.1 * 1.1 * 0.1求出来的结果都是0.7161

广义组合数和伽马函数可以计算小数的情况