gpt4 book ai didi

c - 任何语义正确和句法正确的 C 程序都是算法吗?

转载 作者:太空狗 更新时间:2023-10-29 16:13:14 25 4
gpt4 key购买 nike

“算法被定义为有限的操作序列,执行这些操作将完成特定任务”,并带有此定义。我们可以说任何语法和语义上正确的 C 程序也是一种算法吗?

我的答案是正确的,但是我的教授说答案是错误的,我的同事也是如此。他们使用的反例是

while(1) {

}

printf("%s","blahblah");

无限循环在语义上是不正确的,而 printf() 完成了一项任务,因此它是一种算法。因为您可以使用循环和 putchar() 而不是 printf();

那么你们认为谁是对的呢?

最佳答案

你告诉你的教授,如果他连正确的术语都不知道,他最好停止 split 头发(所以从这一点来看,他的问题没有意义,但无论如何......)。

“算法”在概念上不同于程序。所以答案

Is any semantically correct and syntactically correct C program an algorithm?

不,因为程序与算法不同——程序是……程序。 算法 是解决语言不可知 问题的特定表现形式(即可以用非常通用的方式来表达)。程序是算法的依赖于语言的具体实现(在 C 中,由于“as-if”规则和编译器优化,实际上不需要与算法相同,它是只需要模拟它)。

再多一条评论:

the infinite loop isn't semantically correct

嗯,确实如此。当然,不能简单地解决停机问题,但这并不意味着无限循环“语义上不正确”。当一个程序做的事情与您预期的不同时,它在语义上是不正确的。除非您希望您的程序在您编写 while (1) { } 时执行其他操作而不是挂起,否则没有问题。

无限循环的概念是否被视为算法是另一个问题。通常,永不终止的指令序列被视为算法,您的教授可能就是这么说的。根据Wikipedia :

More precisely, an algorithm is an effective method expressed as a finite list of well-defined instructions for calculating a function.

(强调我的)

关于c - 任何语义正确和句法正确的 C 程序都是算法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14995721/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com