bug*_*net 15 history programming-languages return-value sqrt square-root
大多数编程语言都给出2了平方根的答案4.但是,有两个答案:2和-2.是否有任何特殊原因,历史或其他原因,为什么通常只给出一个答案?
Nie*_*jou 37
因为:
Edd*_*die 17
如果平方根方法返回两个值,则实际上总是丢弃这两个中的一个.除了浪费内存和额外返回值的复杂性之外,它几乎没有用过.每个人都知道你可以多次返回-1并获得另一个根.
我希望只有数学语言会在这里返回多个值,可能是数组或矩阵.但是对于大多数通用编程语言而言,如您所建议的那样,获得的成本可以忽略不计并且成本不可忽略.
Leo*_*Hat 12
一些想法:
从历史上看,函数被定义为返回单个值的过程.
使用原始编程构造来定义一个返回多个这样的值的clean函数本来是很繁琐的.
规则总是有例外:
推导 2平方根通常很简单(简单地否定函数返回的值).如果他们的域依赖于处理正(+)和负( - )根,那么这可能是由sqrt()函数的调用者留下的练习.
有许多功能只能从2种或更多种可能性中返回1个答案.例如,反正切.1的反正切返回45度,但它也可以是225或甚至405.与生活和编程中的许多事情一样,我们知道并且可以依赖的约定.平方根函数返回正值是其中之一.程序员应该记住,还有其他解决方案,并且如果需要在代码中对它们采取行动.
顺便说一下,当处理运动学和逆运动学方程时,这是机器人技术中的常见问题,其中存在对应于笛卡尔位置的多个链接位置解.
在数学中,按照惯例,除非你明确另有说明,否则总是假设你想要某个正方根.四个方根真的是两个.如果你想要否定答案,请在前面加上一个负号.如果你想要两者,请加上加号或减号.没有这个惯例,就不可能写出方程式; 你永远不会知道这个人的意图,即使他们确实在前面放了一个标志(例如,因为它可能是负平方根的负面).另外,如果操作员开始返回两个值,你究竟会如何编写任何涉及数学的计算机代码?它会破坏一切.
这个约定的不幸例外是求解变量.在以下等式中:
x ^ 2 = 4
你别无选择,只能考虑X的两个可能值.如果你取两边的平方根,你得到x = 2,但现在你必须加上加号或减号以确保你没有遗漏任何可能的解决方案.另外,请记住,在这种情况下,技术上X可以是正或负,而不是四的平方根.
| 归档时间: |
|
| 查看次数: |
1859 次 |
| 最近记录: |