Java 从周期序列0,1,2,3,2,1,0,1中获取值的最简单方法是什么。。。按索引?

Java 从周期序列0,1,2,3,2,1,0,1中获取值的最简单方法是什么。。。按索引?,java,algorithm,math,language-agnostic,Java,Algorithm,Math,Language Agnostic,例如,我有一个周期序列,从0开始,然后是1,2,直到3,然后开始下降到2,1,然后是0,然后又是1。让函数为f(min,max,x),其中x是索引,因此: f(0,3,0)=0 f(0,3,1)=1 f(0,3,2)=2 f(0,3,3)=3 f(0,3,4)=2 . . . f(0,3,9)=3 我试过这样的方法: public static int f(int min,int max,int x){ int r=min; int increment=1; for(i

例如,我有一个周期序列,从0开始,然后是1,2,直到3,然后开始下降到2,1,然后是0,然后又是1。让函数为f(min,max,x),其中x是索引,因此:

f(0,3,0)=0
f(0,3,1)=1
f(0,3,2)=2
f(0,3,3)=3
f(0,3,4)=2
.
.
.
f(0,3,9)=3
我试过这样的方法:

public static int f(int min,int max,int x){
    int r=min;
    int increment=1;
    for(int i=0;i<x;i++){
        if(r==max){
            increment=-1;
        }else if(r==min){
            increment=1;
        }
        r+=increment;
    }
    return r;
}
publicstaticintf(intmin,intmax,intx){
int r=min;
int增量=1;
对于(int i=0;i
int index=x%(2*(max-min));//注意周期性
int-val=0;
if(index
int index=x%(2*(max-min));//注意周期性
int-val=0;
if(index
int index=x%(2*(max-min));//注意周期性
int-val=0;
if(index
int index=x%(2*(max-min));//注意周期性
int-val=0;
如果(索引)
检查一下

检查一下

检查一下


将其作为显式公式检查:

// note this doesn't work for negative values as expected
public static int f(int min,int max,int x) {
    return max-abs(x%((max-min)*2)-max+min)
}

// just add abs(x) to make it work for negative numbers
public static int f(int min,int max,int x) {
    return max-abs(abs(x)%((max-min)*2)-max+min)
}

作为显式公式的解决方案:

// note this doesn't work for negative values as expected
public static int f(int min,int max,int x) {
    return max-abs(x%((max-min)*2)-max+min)
}

// just add abs(x) to make it work for negative numbers
public static int f(int min,int max,int x) {
    return max-abs(abs(x)%((max-min)*2)-max+min)
}

作为显式公式的解决方案:

// note this doesn't work for negative values as expected
public static int f(int min,int max,int x) {
    return max-abs(x%((max-min)*2)-max+min)
}

// just add abs(x) to make it work for negative numbers
public static int f(int min,int max,int x) {
    return max-abs(abs(x)%((max-min)*2)-max+min)
}

作为显式公式的解决方案:

// note this doesn't work for negative values as expected
public static int f(int min,int max,int x) {
    return max-abs(x%((max-min)*2)-max+min)
}

// just add abs(x) to make it work for negative numbers
public static int f(int min,int max,int x) {
    return max-abs(abs(x)%((max-min)*2)-max+min)
}

@Teepeemm是的,错过了,修正了!@Teepeemm是的,错过了,修正了!@Teepeemm是的,错过了,修正了!@Teepeemm是的,错过了,修正了!