32

为什么在 Python中0 ** 0等于?1它不应该像这样抛出异常0 / 0吗?

4

3 回答 3

38

维基百科对历史的有趣报道以及对价值的不同观点0 ** 0

这场辩论至少从 19 世纪初就开始了。当时,大多数数学家都同意0 ** 0 = 1,直到 1821 年柯西将0 ** 0表达式与0⁄0未定义形式的表格一起列出。在 1830 年代,Libri 发表了一个无法令人信服的论点0 ** 0 = 1,而莫比乌斯站在他一边……

应用于计算机时,IEEE 754推荐了几种计算功率的函数。它将pow(0, 0)and定义pown(0, 0)为返回1powr(0, 0)返回NaN

大多数编程语言都遵循0 ** 0 == 1. 对于整数和浮点参数,Python 也不例外。

于 2013-01-19T12:43:54.833 回答
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 Alpha0**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 的定义选择通常被定义为不确定的。”

于 2013-01-19T12:59:20.360 回答
-3

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(零个对象未出现)

因此,你不能从无到有!

于 2019-08-31T22:41:53.563 回答