Miałem zadanie domowe, które poprosiło o funkcję, która używa bezpośredniej rekurencji do znalezienia indeksu najniższej, najniższej, ujemnej liczby całkowitej w tablicy. Dodatkowe wymagania dotyczyły parametrów funkcji jako tablicy i rozmiaru, a wartością zwracaną bez ważnej wartości było -999.Czy rekursja ogona jest możliwa, jeśli porównanie zależy od wartości zwracanej?
wymyśliłem to:
int LowIndexMinNeg(int src[], int size)
{
if (size == 0)
return -999;
int index = LowIndexMinNeg(src, size - 1);
if (index >= 0)
return (src[size - 1] < src[index]) ? (size - 1) : index;
else
return (src[size - 1] < 0) ? (size - 1) : index;
}
To działa, spełnia wymagania, i załatwił mi pełny kredyt. Czy można to zrealizować za pomocą rekursji ogonowej?
Wydaje mi się, że ponieważ musisz wziąć wynik z rekursywnego wezwania do użycia w porównaniu, aby zdecydować, czy przekazujesz go lub aktualizujesz, że nie będzie to możliwe, ale rekursja nadal wiąże mój mózg z Węszy to, więc może być coś oczywistego, czego mi brakuje.
Uwaga: Moje zadanie domowe zostało już włączone i ocenione.
nie widzę jak podano –
Dziękuję wszystkim za twoje odpowiedzi.Były one wszystkie pomocne dla zwiększenia mojej wiedzy – Matt