Я пытаюсь найти самый низкий индекс значения в пределах диапазона, который находится в массиве, переданном рекурсивной функции.
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)
Это работает, чтобы найти значение самого высокого индекса... но как мне вернуться? поэтому, когда функция находит значение, оно ее флага и не будет переопределять возвращаемое значение с другим? Я не могу изменить список параметров, чтобы добавить флаг, и я не хочу использовать статические переменные.
благодарю!
Попробуйте следующую рекурсивную функцию
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);
Здесь находка называется напрасно. Его результат не используется.
std::min_element(arry,arry+6)-arry
... о, подождите, вы делаете это для hw, не так ли?