【问题标题】:C++ recursive array search for lowest indexC ++递归数组搜索最低索引
【发布时间】:2014-02-03 20:59:12
【问题描述】:

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

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)

这可以找到 HIGHEST 索引值...但是我该如何回溯?所以当函数找到它标记它的值并且不会用另一个覆盖返回值时?我无法更改参数列表以添加标志,并且我不想使用静态变量。

谢谢!

【问题讨论】:

  • std::min_element(arry,arry+6)-arry...哦,等一下,你这样做是为了硬件,不是吗?
  • 为什么要递归?这些值未排序,因此二进制搜索不起作用。
  • 看起来第三个if必须在第二个if之前。

标签: c++ arrays search recursion


【解决方案1】:

试试下面的递归函数

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);

这里调用 find 是徒劳的。它的结果没有被使用。

【讨论】:

    猜你喜欢
    • 2015-04-12
    • 2013-06-04
    • 2012-09-16
    • 1970-01-01
    • 2019-01-19
    • 2013-05-12
    • 1970-01-01
    • 2014-05-05
    相关资源
    最近更新 更多