У меня вчера была эта проблема на экзамене. Я не мог решить это, так что вы можете представить результат ...
Создайте рекурсивную функцию: int invertint (int num), которая получит целое число и вернет его, но в инвертированном виде, например: 321 вернется как 123.
Я написал это:
int invertint( int num ) {
int rest = num % 10;
int div = num / 10;
if( div == 0 ) {
return( rest );
}
return( rest * 10 + invert( div ) )
}
Работает для 2-значных номеров, но не для 3-х и более цифр. Поскольку 321 вернет 1 * 10 + 23 на последнем этапе.
Большое спасибо!
PS: Есть ли способ быстрее разобраться в подобных проблемах рекурсии или все зависит от воображения?
1230
,3210
или321
? - person Jo So   schedule 05.07.2012if(is_base_case){ basecase } else { recursive_case }
. Это становится естественным с практикой и 2) Узнайте, как преобразовать хвостовую рекурсию в циклы while и наоборот. Под эту категорию попадают многие виды проблем. - person hugomg   schedule 05.07.2012