我正在尝试找到传递给递归函数的数组范围内值的最低索引。
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)
这可以找到最高的索引值...但我该怎么回溯?所以当函数找到它标记它的值时,不会用另一个值覆盖返回值?我不能改变参数列表来添加标志,我不想使用静态变量。
谢谢!
答案 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);
这里发现是徒劳的。其结果未被使用。