int mystery(int n) {
int s = 0;
int tmp = n+1;
for (int i; i<=n; i++) {
s = tmp + i;
tmp = s;
}
return s;
}
如何确定此功能以及该功能的作用?此外,这个功能可以在运行时间方面得到改善吗?
答案 0 :(得分:0)
上面有一些多余的代码; s
完全没必要。没有它就重新写它会让它更清晰。
int mystery(int n) {
int tmp = n + 1;
for (int i = 1; i<=n; i++) {
tmp += i;
}
return tmp;
}
它做的是
tmp
设为n + 1 目前的运行时间为O(n)
。但是,事实证明1 + 2 + 3 + ... + N
有constant time formula。我们可以用它来创建以下内容,这是一个恒定的时间。
int mystery(int n) {
int triangleNumber = (n * (n + 1)) / 2;
return triangleNumber + n + 1;
}