C ++递归数组搜索最低索引

时间:2014-02-03 20:59:13

标签: c++ arrays search recursion


我正在尝试找到传递给递归函数的数组范围内值的最低索引。

int find(int arry[], int length, int lower, int upper){
    if(length>1)
        find(arry,length-1,lower,upper);
    if(arry[length-1]>=lower && arry[length-1]<=upper)
        return length-1;
    if(length==0)
        return -1;
}

函数调用:

int arry[]={9,2,6,3,2,3};
    cout << "Index is: " << find(arry,6,2,3)

这可以找到最高的索引值...但我该怎么回溯?所以当函数找到它标记它的值时,不会用另一个值覆盖返回值?我不能改变参数列表来添加标志,我不想使用静态变量。

谢谢!

1 个答案:

答案 0 :(得分:0)

尝试以下递归功能

int find( const int array[], int length, int lower, int upper )
{
    if ( length == 0 ) return -1;

    if ( array[0] >= lower && array[0] <= upper ) return 0;

    int n = 1 + find( array + 1, length - 1, lower, upper );
    return ( n == 0 ? -1 : n ); 
}

至于你的实现,至少由于第一个陈述

,这是错误的
if(length>1)
    find(arry,length-1,lower,upper);

这里发现是徒劳的。其结果未被使用。