Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

рекурсивный алгоритм

11K
22 апреля 2005 года
VasiliyF4
1 / / 22.04.2005
Подскажите рекурсивный алгоритм для проверки, является ли число полиндромом (123321).
Нужно использовать только одну функцию, при этом не зная количество цифр в числе.
Вызов функции на С выглядит так:
long int fun(long int num)
функция возвращает 1 - если да и 0 - если нет.
Спасибо.
488
22 апреля 2005 года
Mоngооsе
465 / / 01.04.2005
Код:
long int fun(long int num)
{
  if(num<10)               // num изначально состоит
    return 1;              // из одной цифры

  long int iLast = num%10; // последняя цифра
  long int iFirst;         // первая цифра num
  long int pov = 1;

  while(true)              // выделяем первую цифру
  {
    iFirst = num/pov;
    if(iFirst<10)break;
    pov*=10;
  }

  if(iFirst!=iLast)        // две крайние цифры
    return 0;              // не равны
 
  if(num<1000)             // num<1000 означает, что num
    return 1;              // имеет вид "nxn", или "nn"
  else
  {
    num=(num-iFirst*pov-iLast)/10;  // убираем две крайние цифры с num
    return fun(num);       // проверка оставшейся части
  }
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог