Рекурсия и возврат индекса массива с помощью рекурсии - PullRequest
0 голосов
/ 01 августа 2020

может кто-нибудь объяснить, как переменная ans возвращает индекс массива, если мой массив равен 9 8 10 8, и я хочу найти 10, и в рекурсии ans вернет 1, а затем он объявит с ans + 1 и вернет 2.

enter code here

int firstIndex (int input [], int size, int x) {

if(size==0)

{

return -1;

}

if(input[0]==x)

{return 0;

}

int ans=firstIndex( input+1,  size-1,  x);

if(ans!=-1)

{
    return ans+1;
    
}

else

{
    return ans;
}

}

1 Ответ

0 голосов
/ 01 августа 2020

Хорошо, поэтому функция, когда она получает первый вызов, вектор выглядит так: [9 8 10 8]. Затем он сравнивает 9 с 10 (элемент в поиске). Поскольку они не равны, функция выполняет рекурсивный вызов, но с новым вектором, [8 10 8]. в этот момент у нас в стеке есть первый вызов. Назовем его C1.

Затем он сравнивает 8 с 10 (элемент в поиске). Поскольку они не равны, функция выполняет рекурсивный вызов, но с новым вектором, [10 8]. в этот момент у нас в стеке есть второй и первый вызов. Назовем его C2 C1.

Затем он сравнивает 10 с 10 (элемент в поиске). Поскольку они равны, функция возвращает 0. Итак, в нашем стеке функция C2 получает в результате 0. Поскольку он отличается от -1, он возвращает 1 вызову C1. Поскольку 1 не равно -1, он возвращает 2, оставляя правильный результат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...