A sprawdź sobie rekurencyjnie co się dzieje.
np. dla zestawu danych 54321 - ostatnia cyfra rekurencyjnie będzie 5
Dla porządku malejącego, jeżeli ostatnia cyfra jest większa niż poprzednia, to liczba nie jest malejąca
Number: 54321
Number: 5432
Number: 543
Number: 54
Number: 5
Liczba nie jest malejąca.
Ostatnia cyfra jest największa.
Druga sprawa - typ danych, który podajesz podczas operacji dzielenia (number / 10) - powoduje ze wynikiem number / 10 może być wartość niecałkowita, a używając unsigned long long, tracisz część dziesiętną, co tez moze wplywac na wynik
int is_sorted_desc(unsigned long long number) {
if (number == 0) {
return 1;
}
if (static_cast<long long>(number % 10) < static_cast<long long>((number / 10) % 10)) {
return 0;
}
return is_sorted_desc(number / 10);
}
int main() {
unsigned long long num_desc = 1234;
if (is_sorted_desc(num_desc)) {
std::cout << "Liczba jest malejąca." << std::endl;
} else {
std::cout << "Liczba nie jest malejąca." << std::endl;
}
return 0;
}
//Liczba jest malejaca, jak odwrocisz to na 54321 to okresli Ci ze nie jest malejaca