最编程语言得到 2 作为回答的平方根 4.然而,有两个答案: 2-2.是否有任何特别的原因、历史或其他方式,为什么只有一个答案通常是吗?

有帮助吗?

解决方案

因为:

  • 在数学、√x 通常,除非另有规定,指的是主要的(即正的)根 x [http://mathworld.wolfram.com/SquareRoot.html].
  • 一些语言没有能力返回多于一个价值。
  • 因为你可以申请的否定,返回这两个是多余的。

其他提示

如果平方根方法返回两个值,则实际上总是丢弃这两个中的一个。除了浪费内存和额外返回值的复杂性之外,它几乎没有用过。每个人都知道你可以将-1返回的答案多出来并获得另一个根。

我希望只有数学语言会在这里返回多个值,可能是数组或矩阵。但对于大多数通用编程语言而言,按照您的建议,可以获得微不足道的收益和不可忽视的成本。

一些想法:

  • 从历史上看,功能定义作程序,返回一个 单个的价值.

  • 这将是繁琐的(使用原始编程结构)来定义的一个清洁的功能返回 多个值 这样的。

  • 总是有 例外情况 为本规则:

    • 0例如只有一个 根(0).
    • 你不能采取的平方根 负数 (除非语言支持复杂的数字)。这可能被视为例外(如"除0"),在语言,它不支持虚构数字或复杂的数字系统。
  • 它通常被简单的 推断 2平方根(简单地否定价值返回的功能)。这可能是左作为一个运动,通过呼叫者的sqrt()功能,如果他们的 取决于处理这两个积极的(+)和负面的(-)根源。

返回一个数字比返回两个数字更容易。大多数工程决策都是以这种方式做出的。

有许多功能只能从2种或更多种可能性中返回1个答案。例如,反正切。 1的反正切返回45度,但它也可以是225或甚至405.与生活和编程中的许多事情一样,我们知道并且可以依赖的约定。平方根函数返回正值是其中之一。程序员应该记住,还有其他解决方案,并且如果需要在代码中对它们采取行动。

顺便说一下,当处理运动学和逆运动学方程时,这是机器人技术中的常见问题,其中存在对应于笛卡尔位置的多个链接位置解。

在数学中,按照惯例,除非你另有明确说明,否则总是假设你想要某个正平方根。四个方根真的是两个。如果你想要否定答案,请在前面加上一个负号。如果你想要两者,请加上加号或减号。没有这个惯例,就不可能写出方程式;你永远不会知道这个人的意图,即使他们确实在前面放了一个标志(例如,因为它可能是负平方根的负面)。另外,如果操作员开始返回两个值,你究竟会如何编写任何涉及数学的计算机代码?它会打破一切。

这个约定的不幸例外是求解变量。在以下等式中:

x ^ 2 = 4

你别无选择,只能考虑X的两个可能值。如果你取两边的平方根,你得到x = 2,但现在你必须加上加号或减号以确保你没有丢失可能的解决方案。另外,请记住,在这种情况下,技术上X可以是正或负,而不是四的平方根。

因为多种返回类型很难实现。如果你真的需要其他结果,那么将结果乘以-1会不是很容易?

因为大多数程序员只想要一个答案。

如果调用者需要,可以很容易地从正值生成负值。对于大多数代码,调用者只使用正值。


但是,现在很容易以多种语言返回两个值。在JavaScript中:

var sqrts=function(x) {
  var s=Math.sqrt(x);
  if (s>0) {
    return [s,-s];
  } else {
    return [0];
  }
}

只要调用者知道要遍历返回的数组,你就是黄金。

>sqrts(2)
[1.4142135623730951, -1.4142135623730951]

我认为因为该函数被称为<!>“sqrt <!>”;如果你想要多个根,你必须调用函数<!> quot; sqrts <!> quot;不存在,所以你不能这样做。

更严重的答案是,您建议更大问题的特定实例。许多方程式和通常的反函数(包括sqrt)具有多种可能的解决方案,例如arcsin等,并且这些通常是一个问题。例如,使用arcsin,应该返回无限数量的答案吗?例如,请参阅有关分支机构削减的讨论。

因为它在历史上被定义为{{citation needed}}作为给出已知表面的正方形的边长的函数。在这种情况下,长度是正面的。

你可以随时告诉另一个号码是什么,所以也许没有必要同时返回它们。

这可能是因为当人们使用计算器计算平方根时,他们只想要正值。

更进一步,询问为什么你的计算器不会让你取负数的平方根。这是可能的,使用虚数,但普通用户绝对没有使用它。

关于想象中的数字。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top