Mam problem z dwoma zadaniami.
- Zadanie 1 polega na napisaniu funkcji, która w sposób rekurencyjny, znajdzie wartość największego elementu w tablicy. Mam coś takiego:
int max(const int arr[], int size) {
if (size == 1) {
return arr[0];
}
int find = max(arr + 1, size - 1);
return (arr[0] > find) ? arr[0] : find;
}
Jednak mój program się rozsypuje podczas testowania.
Napisz funkcję, która w sposób rekurencyjny, będzie odwracać podaną liczbę. Odwrócenie liczby oznacza, utworzenie nowej liczby składającej się z tych samych cyfr, tylko w odwrotnej kolejności. Na przykład, dla liczby 12 liczba odwrócona będzie równa 21. W przypadku zer znajdujących się na końcu liczby zostają one pominięte w trakcie procesu odwracania, to znaczy, że liczba odwrócona dla liczby 100 to 1 (tak samo jak dla liczby 10).
Moja funkcja wygląda tak:
unsigned long reverse_number(unsigned long a) {
if (a < 10) return a;
return (a % 10) * pow(10, floor(log10(a))) + reverse_number(a / 10);
}
Problemem jest jednak to, że nie mogę korzystać z biblioteki math.h, więc funkcje pow, logarytm itd. odpadają. Jak mogę to zapisać inaczej, bez użycia biblioteki math.h?