【发布时间】:2019-08-09 07:56:19
【问题描述】:
我正在做一些代码挑战,我想通过指定起始索引并仅从起始索引中获取第一个(3 个或任何长度)值来从我的数组中获取前 3 个值。
我试过这段代码,它可以工作,但是代码结构太长了,我怎样才能把它缩短,以便于理解。
int n = 10;
double signature = new double[] { 1, 1, 1 };
double[] ret = new double[n];
double sum = 0;
ret[0] = signature[0];
ret[1] = signature[1];
ret[2] = signature[2];
int x, i;
for (i = 0; i < n - signature.Length; i++)
{
for(x = i; x <= signature.Length + i; x++)
{
sum += ret[x];
}
ret[x - 1] = sum;
sum = 0;
}
return ret;
【问题讨论】:
-
您当前的代码似乎与您当前在问题文本中描述的不符。你能说清楚你想要什么吗?
-
您的代码与您的问题不符。您是否要在移动的起始索引上计算三个元素的某种总和?
-
FWIW,您是如何决定 Linq 将为您提供性能的?它为您提供可读性和其他情况下的懒惰阅读,但在您展示的示例中,我认为 Linq 不会让程序运行得更快。
-
@John 我只是希望我的代码更短。
-
@jkdev 你说得对,我是堆栈溢出的新手,我花时间完全理解它的每个部分,这是我第一次看到代码审查。下次遇到这种情况我会使用 Code Review 谢谢!