为什么0 ** 0
在Python中等于1
?它不应该像0 / 0
那样抛出异常吗?
答案 0 :(得分:36)
维基百科对0 ** 0
的价值history and the differing points of view on进行了有趣的报道:
辩论至少从19世纪初开始。那时,大多数数学家都同意
0 ** 0 = 1
,直到1821年,Cauchy在未定义形式的表格中列出0 ** 0
以及0⁄0
等表达式。在19世纪30年代,Libri对0 ** 0 = 1
发表了一个令人难以置信的论点,而Möbius则支持他......
应用于计算机时,IEEE 754建议使用多种计算功能的功能。它将pow(0, 0)
和pown(0, 0)
定义为返回1
,将powr(0, 0)
定义为返回NaN
。
大多数编程语言都遵循0 ** 0 == 1
的惯例。对于整数和浮点参数,Python也不例外。
答案 1 :(得分:8)
考虑x^x
:
使用限制我们可以轻松找到我们的解决方案并重新排列x^x
我们得到:
x^x= exp(log(x^x))
现在,我们来自:
lim x->0 exp(log(x^x))= exp(lim x->0 xlog(x)) = exp(lim x->0 log(x)/(x^-1))
应用L'Hôpital
规则,我们得到:
exp(lim x^-1/(-x^-2)) = exp(lim x->0 -x) = exp(0) = 1=x^x
但根据Wolfram Alpha 0**0
的说法是不确定的,并且他们获得了以下解释:
0 ^ 0本身未定义。缺乏明确的意义 数量来自a ^ 0所构成的相互矛盾的事实 总是1,所以0 ^ 0应该等于1,但0 ^ a总是0(对于a> 0),所以0 ^ 0 应该等于0.可以认为0 ^ 0 = 1是一个自然的定义 因为lim_(n-> 0)n ^ n = lim_(n-> 0 ^ +)n ^ n = lim_(n-> 0 ^ - )n ^ n = 1。 但是,对于n的一般复数值,不存在限制。因此,选择 0 ^ 0的定义通常被定义为不确定。“
答案 2 :(得分:-1)
2 ^ 2 =(1 + 1)*(1 + 1)= 4(两个对象出现了两次)
2 ^ 1 =(1 + 1)* 1 = 2(一次出现两个对象)
2 ^ 0 =(1 + 1)* 0 = 0(未发生两个对象)
1 ^ 2 = 1 *(1 + 1)= 2(一个对象出现两次)
1 ^ 1 = 1 * 1 = 1(一次出现一个物体)
1 ^ 0 = 1 * 0 = 0(未发生一个物体)
0 ^ 2 = 0 *(1 + 1)= 0(两次出现零个对象)
0 ^ 1 = 0 * 1 = 0(一次出现零个对象)
0 ^ 0 = 0 * 0 = 0(没有出现零个对象)
因此,您不能一无所有!