网上的解释是这样的:
说的简单一点是认为规定的,但它是有道理的,你想过没有,为什么不规定0!=0呢?因为阶乘是一个递推定义,n!=n*(n-1)!,那么必然有一个初值需要人为规定.我们知道1!=1,根据1!=1*0!,所以0!=1而不是0.
显然,这是为了让公式n!=n*(n-1)!获得全适用(包括1!)。
可是,1的阶层明显是不需要*(1-1)!的,只要定义1!=1为初值,不需要乘以其它数,是不需要额外定义0!=1的。
为什么我认为0!=1荒谬?理由如下:
①0和1一样,本来就无法实现阶乘;
②如果允许定义0!=1,是不是也可以定义(-1)!=?,根据公式n!=n*(n-1)!,0!=0*(0-1)!,可以得出两个逻辑矛盾的结果:1、0!=0*任意数=0,0!究竟是等于1还是0;2、(-1)!=0!/0=1/0(0为分母不适用……)。
③如果可以定义0的阶层,意味着0将会参与阶层运算,阶乘的答案就全乱套了,全部自然非负整数的阶层结果都将会等于0。
因此,是必须排除0,0是在阶乘适用范围之外的。0的阶乘正确答案是“错误”,而不能是1。由于以上逻辑关系,认为0!不存在,不可以被定义为初值1,现有课本和计算器的定义是错的。
如果阶乘必须定义一个初值,只能定义1!=1,因为1的阶乘本来就只有一个非0整数,已经没有乘法了。