Problem z rekurencją i funkcją logiczną

0

Witam mam zadanie:

Napisz rekurencyjną funkcję sprawdzającą czy wśród elementów tablicy są liczby mniejsze od 2. Parametrami funkcji są tablica i liczba elementów.

Tu mój kod, problem z tym że czy w tablicy są elementy większe czy mniejsze od 2 to i tak wyświetla prawdę :

bool czyMniejsza(int tab[], int n)
{
	if(n==1)
{
	if(tab[0]<2)
	{
		return true;
	}
}
else
{
		if(tab[n]<2)
	{
		return true;
	}
	else if(tab[n]>2) return false;
	czyMniejsza(tab,n-1);
	
}
}
1

Tak wygląda, że działa:

bool isLess(int tab[], int n) {
	if (n == -1) {cout << n<<endl;return false;}
	else {
		if (tab[n-1] < 2 ) {  return true;}
		else {
			return isLess(tab, n - 1);
	}
     }
}
3
bool czyMniejsza(int *tab, int n) {
     if (n <= 0) return false;
     return *tab < 2 || czyMniejsza(tab + 1, n - 1);
}
0
MarekR22 napisał(a):
bool czyMniejsza(int *tab, int n) {
     if (n <= 0) return false;
     return *tab < 2 || czyMniejsza(tab + 1, n - 1);
}

Jeszcze można ścieśnić... :)

bool czyMniejsza(int *tab, int n) {
     return n > 0 && (*tab < 2 || czyMniejsza(tab + 1, n - 1));
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1