算法和函数有啥区别? [关闭]

Posted

技术标签:

【中文标题】算法和函数有啥区别? [关闭]【英文标题】:What is the difference between an algorithm and a function? [closed]算法和函数有什么区别? [关闭] 【发布时间】:2011-03-24 10:02:10 【问题描述】:

它们是一样的吗?

【问题讨论】:

食谱和美味蛋糕有什么区别? 应该更清楚地说明所询问的内容。你指的是数学函数还是命令函数? 【参考方案1】:

没有。

函数是计算机程序中的一段代码。

算法是描述如何解决问题的抽象概念。

【讨论】:

不幸的是,算法没有正式和精确的定义。通过 Church-Turing 论文,有一个普遍接受的定义是非正式的。甚至 CLRS 都以“非正式的算法是……”开头。甚至这个答案也说明了“抽象概念”,这很模棱两可。 我认为函数是一个数学概念,不一定与计算机程序相关,尽管我们在计算机编程中也使用称为函数的东西。据我所知,数学函数——作为一个概念——早在使用函数的计算机编程出现之前就被引入了。 @runeks,考虑到这是一个编程相关问题的网站,我认为这个事实无关紧要。 这是相反的方式,哈哈【参考方案2】:

在数学中,函数是“一种数学关系,使得给定集合(函数的域)的每个元素都与另一个集合的元素(函数的范围)相关联”(来源 - google.com , 定义:函数)。

在计算机科学中,函数是一段代码,可选择接受参数,可选择给出结果,可选择具有副作用(取决于语言 - 某些语言禁止副作用)。它必须具有特定的机器实现才能执行。

计算机科学术语源于数学术语,是数学概念的机器实现。

算法是“指定如何解决某些问题的精确规则(或规则集)”(来源 - google.com,define:algorithm)。算法可以在计算机科学之外定义,并且没有确定的机器实现。你可以通过手写来“实现”它:)

这里的关键区别在于,在计算机科学中,算法是抽象的,并且没有确定的机器实现。函数是具体的,并且确实有机器实现。

【讨论】:

这不一定是真的。 “函数”可以表示以特定语言实现的代码单元。它还可以表示基于 lambda 演算模型的计算的抽象功能定义。 这是更好的答案。【参考方案3】:

算法是一组指令。

在计算机编程中,函数是算法的实现。

【讨论】:

a set 在这里是一个模棱两可的词,尽管它可能可以被澄清。 在计算机编程中,函数可以是算法的实现,也可以简单的更新状态,甚至只做输入或输出。【参考方案4】:

算法是执行计算的一系列步骤(过程),而函数是参数和结果之间的数学关系。

编程中的函数不同于函数的典型数学含义,因为它是一组指令,用于实现计算函数的算法。

【讨论】:

【参考方案5】:

算法描述了一般思想,而函数是该思想的实际工作实现。

【讨论】:

【参考方案6】:

这可能几乎是一个哲学问题,但我认为算法是手头问题的答案(或操作方法),而作为函数本身并不一定回答一个问题。

你通常想要做的是将你的算法分成几个函数,每个函数都有自己的目标,最终,当它们一起使用时,将解决手头的问题。

例如:您想要对数字列表进行排序。使用的算法将是例如合并排序算法。该特定算法实际上由多个函数组成,一个用于拆分数组,另一个用于检查相等性,另一个用于将所有内容重新合并在一起,等等。

【讨论】:

【参考方案7】:

数学函数是算法输入和输出的接口或规范。

算法是定义可能实现功能的步骤的精确配方。

令人困惑的是,计算机语言设计者通过使用 functionfuncmethod 等概念来讨论这两个概念来消除这种区别。

所以区别是规范与定义之一。

还有语义上的区别:算法旨在为问题提供解决方案。它以目标为导向。一个函数只是 - 没有必要的目的论组件。

【讨论】:

【参考方案8】:

算法是函数的实现。

在某些情况下,算法很简单:

功能:两个数之和。 算法: int sum(int x, int y) return x+y;

在其他情况下,它不是:

功能:最佳棋步。 算法: Move bestChessMove(State gameState) //I don't know the algorithm.

【讨论】:

算法可能只是伪代码。【参考方案9】:

算法是一个(可能是非正式但必须是精确的)指令序列。函数是将某些输入与特定输出相关联的正式规则。函数实现和形式化算法。例如。我们可以将“从 a 到 b”形式化为 go(a)=bgo(x,a)=b(w/ x 去的人)等。根据Wikipedia,

算法是一种有效的方法,可以在 有限的空间和时间,并以明确的形式 计算函数的语言。

所以你可以说“go(ing) from a to b”是计算go(a)=b的有效方法(如果你愿意的话)

【讨论】:

【参考方案10】:

算法通常是指经过数学处理后得到结果的方法或过程。函数是一个子例程,用于避免一遍又一遍地编写相同的代码。它们的用途不同。例如,可能有用于加密数据的算法,以及用于将代码发布到网页的功能。

这里有一些进一步的参考:

http://en.wikipedia.org/wiki/Algorithm

http://en.wikipedia.org/wiki/Function_(computer_science)

【讨论】:

【参考方案11】:

函数是一种符号表示,而方法是获得答案所需的机械步骤。

假设这个函数:

f(x) = x^ 2

现在如果我告诉你数f(5000),你必须做这个函数没有说的事情。例如如何乘法。所以真的这些只是符号。

但如果我有一个 python 方法,例如:

x = math.pow(500, 2) # or whatever it is

然后在这种情况下,每个操作的步骤本身都是完全定义的(在库中;))。

【讨论】:

以上是关于算法和函数有啥区别? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

“k 均值”和“模糊 c 均值”目标函数有啥区别?

蜂群算法与人工蜂群算法有啥的区别吗

粒子群优化算法和多模态优化算法有啥区别

决策树算法 CART和C4.5决策树有啥区别?各用于啥领域?

在线排序算法和外部排序算法有啥区别?

贪心算法和启发式算法有啥区别?