考虑这段Java代码:
import java.util.Scanner;
class BreakWhileLoop {
public static void main(String[] args) {
int n;
Scanner input = new Scanner(System.in);
while (true) {
System.out.println("Input an integer");
n = input.nextInt();
if (n == 0) {
break;
}
System.out.println("You entered " + n);
}
}
}
让我们来看看这个特例:the user will always enter any integer except 0
。
1.我可以将此代码视为算法吗?
2.如果是,如何计算其复杂性?
谢谢
答案 0 :(得分:6)
为了避免琐碎的答案,让我们通过删除except 0
条件来放松问题陈述。
然后是的,这是一个算法,我们可以称之为0 acceptor
。
假设用户输入需要恒定时间,时间复杂度为O(N)
,其中N
是非零序列的长度。
答案 1 :(得分:2)
“算法是有限的明确指令序列 计算终止于a的函数(或执行过程) 明确的结束状态。“
取自:https://softwareengineering.stackexchange.com/questions/69083/what-is-an-algorithm
如果用户始终保持输入值,那么这不是算法。
答案 2 :(得分:2)
它将永远运行。时间复杂度用于指定算法运行时间的上限,具体取决于输入。由于无论输入是什么,您的代码都将永远运行,因此讨论其时间复杂性毫无意义。
答案 3 :(得分:0)
交互是比基于规则的计算机问题解决算法更强大的范例,推翻了所有计算都可以表达为算法的流行观点。
您可以在this renowned article by Wegner中跟踪详细信息和证据,这是"为什么互动比算法更强大?"