Для начала используйте вместо Вашего
MAXANSWER именнованную константу
UINT_MAX, определенную в
limits.h. У меня подозрение, что проблема в 2^32 (естественно не укладывается в 32-битное беззнаковое целое).
Далее. Рекомендую для начала завести промежуточную переменную типа
unsigned long long int, проводить с ней все вычисления, проверять ее на то, что она не больше UINT_MAX, и присваивать Вашим переменным ее значение в положительном случае.
Цитата:
Error - глобальная переменная, изначально равная 0, как я понимаю, когда наступит переполнение, она станет 1 и, чтобы не заходить в рекурсию, я поставил эту проверку..возможно, я ошибаюсь и она действительно лишняя..
Посмотрите внимательно - переполнение может произойти только тогда, когда все экземпляры рекурсивной ф-ии уже вызваны, и в каждом вызове проверка на Error уже прошла.