Loops 创建双向循环的参数化方法
我只是浏览了一下我写的2048版本,我意识到我写了四种不同的方法来向上、向左、向下和向右移动和合并Loops 创建双向循环的参数化方法,loops,Loops,我只是浏览了一下我写的2048版本,我意识到我写了四种不同的方法来向上、向左、向下和向右移动和合并 合并左/右和上/下类似,但一个循环0-3,另一个循环3-0。现在我只能想到一种方法来参数化它:传递起始索引(3或0)、递增索引(1或-1)和结束索引(0或3)。这似乎是个坏主意。有更好的方法吗?您可以将相同的重新用于并在实际使用变量时管理条件 void f(boolean isLeft) { int n = 3; for ( int i = 0 ; i <= n ; i++
合并左/右和上/下类似,但一个循环0-3,另一个循环3-0。现在我只能想到一种方法来参数化它:传递起始索引(3或0)、递增索引(1或-1)和结束索引(0或3)。这似乎是个坏主意。有更好的方法吗?您可以将相同的
重新用于
并在实际使用变量时管理条件
void f(boolean isLeft) {
int n = 3;
for ( int i = 0 ; i <= n ; i++ ) {
// add here the condition, without a change in for
if ( isLeft ) {
// use i
} else {
// use n-i
}
}
}
void f(布尔isLeft){
int n=3;
对于(inti=0;i,因为没有提到编程语言,所以我正在编写C
函数
void loop(int direction, int length)
{
// Assuming direction > 0 is left
int offset = direction > 0 ? 0 : (length - 1);
int sign = direction > 0 ? 1 : -1;
for (int i = 0; i < length; i++) {
int index = sign * i + offset;
//doSomethingOnIndex(index);
}
}
void循环(整数方向,整数长度)
{
//假设方向>0为左
int偏移=方向>0?0:(长度-1);
int符号=方向>0?1:-1;
for(int i=0;i
这里的length
是迭代次数。对于左用循环(1,3);
和右用循环(0,3);
对不起,我怎么能解释得更好呢?对我来说,合并和移动的细节似乎无关紧要。