gpt4 book ai didi

c# - 从范围内的起始索引向上和向下计数的循环

转载 作者:行者123 更新时间:2023-12-05 09:27:16 24 4
gpt4 key购买 nike

我在开发一个从给定整数 (start) 开始,然后在给定范围内从该起点向上向下计数的 for 循环时遇到问题(最小最大)。我希望结果按到给定起点的距离排序。如果 for 循环不是这里的正确工具,我愿意接受其他建议!

由于这很难解释,我在下面举了一个例子:

var start = 4;
var max = 10;
var min = 0;
var stepSize = 1;
for(var i=startIndex; i>=min && i<=max; ???) {
Console.WriteLine(i)
}

结果应该是这样的:

4 5 3 6 2 7 1 8 0 9 10

对我来说真正棘手的部分是交替必须停止以达到最大值 10 并且同时不低于 0 的结尾。

我开始试验并找到了一个适用于第一位的解决方案:

const int start = 4;
const int stepSize = 1;

for (var (i,j,k) = (start,1,5); Math.Abs(j)<=11; k=(k+j),j=-j-Math.Sign(j)*stepSize,i=(k+(start-5))%11) {
Console.WriteLine(i);
}

这对于需要交替的第一部分工作正常,但一旦交替需要停止,它就会中断。这个实验的结果是:

4 5 3 6 2 7 1 8 0 9 -1

最佳答案

这是一个 for 循环,但就像其他人已经提到的那样,我认为其他结构更适合您的任务:

  public static void Main() {
int start = 4;
int max = 10;
int min = 0;
int stepSize = 1;
for(int i=start, j=start; i>=min || j<=max; i-=stepSize, j+=stepSize) {
if (i==start) {
Console.Write(i + " ");
}
else {
if (j <= max) {
Console.Write(j + " ");
}
if (i >= min) {
Console.Write(i + " ");
}
}
}
}

关于c# - 从范围内的起始索引向上和向下计数的循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72735081/

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