数组的for循环的替代实现

时间:2019-11-04 04:42:15

标签: c

我正在尝试实现以下代码。但是根据编码准则,必须实现以下内容而没有任何循环(例如,禁止循环)。

有人可以使用if else语句帮助我编写代码吗?

max= 0.4 / cycleTime;  //The cycle time can vary from 0.05 to 0.2
for(i = max; i>0; i--)
{
    arr[i]= arr[i-1];
    ArrMin = ArrMin.min(arr[i]);
    ArrMax = ArrMax.max(arr[i]);
}

2 个答案:

答案 0 :(得分:1)

展开它,并在开关盒中使用max
这是Duff的无环装置。

i=max;
switch (max) 
{
case 8:
    arr[i]= arr[i-1];    ArrMin = ArrMin.min(arr[i]);    ArrMax = ArrMax.max(arr[i]);
    i--;
case 7:
    arr[i]= arr[i-1];    ArrMin = ArrMin.min(arr[i]);    ArrMax = ArrMax.max(arr[i]);
    i--;
case 6:
    arr[i]= arr[i-1];    ArrMin = ArrMin.min(arr[i]);    ArrMax = ArrMax.max(arr[i]);
    i--;
case 5:
    arr[i]= arr[i-1];    ArrMin = ArrMin.min(arr[i]);    ArrMax = ArrMax.max(arr[i]);
    i--;
case 4:
    arr[i]= arr[i-1];    ArrMin = ArrMin.min(arr[i]);    ArrMax = ArrMax.max(arr[i]);
    i--;
case 3:
    arr[i]= arr[i-1];    ArrMin = ArrMin.min(arr[i]);    ArrMax = ArrMax.max(arr[i]);
    i--;
case 2:
    arr[i]= arr[i-1];    ArrMin = ArrMin.min(arr[i]);    ArrMax = ArrMax.max(arr[i]);
    i--;
    arr[i]= arr[i-1];    ArrMin = ArrMin.min(arr[i]);    ArrMax = ArrMax.max(arr[i]);
    i--;
}

答案 1 :(得分:0)

递归FTW !!

int minimum(int *array, size_t len) {
    assert(len > 0);
    if (len == 1) {
        return *array;
    } else {
        int tmp = minimum(array + 1, len - 1);
        return tmp < *array ? tmp : *array;
    }
}

maximum()

类似