Обратный порядок целых чисел по рекурсии - PullRequest
0 голосов
/ 31 января 2019

"Напишите рекурсивную функцию, которая получает целое число в качестве входных данных (которое не начинается с 0) и возвращает целое число в обратном порядке.

Например: 58347 возвращает как 74385

Указатели, массивы, выделение памяти недопустимо "

int reverse (int num);

Мы должны знать" длину "целого числа, можно ли это сделатьбез глобальной переменной?

Может быть, какие-то побитовые операции?

Моя попытка:

int reverse(int num){
    int temp;
    if(num/10 == 0)
        return num;
    else
      return num%10*10+reverse(num=/10)
}

Ответы [ 2 ]

0 голосов
/ 31 января 2019

Я не буду делать за вас домашнюю работу, но дам несколько советов:

  1. Операция n % 10 даст вам наименее значимую цифру в представлении целого числа с основанием-10.
  2. При целочисленном делении условие n /= 10 в цикле всегда будет в конечном итоге ложным (0) и изменит наименее значимую цифру в представлении числа с основанием 10 на второе наименее-значащая цифра.
  3. Умножение переменной аккумулятора на 10 создаст "комнату" для другой цифры.
0 голосов
/ 31 января 2019

(это не начинается с 0)

Я не уверен, что проблема пытается здесь подразумевать, учитывая предоставленный прототип функции.

Мы должны знать "длину" целого числа

Нет, нет необходимости знать длину целого числа.

можно ли это сделать без глобальногопеременная?

Да, конечно.Вы должны получить единицы целого числа (то есть цифру наименьшего значения, например, 4 в 1234), извлечь ее (например, получив 123) и продолжать повторять до тех пор, пока число не станет 0. * 1021.*

Может быть, какие-то побитовые операции?

Нет, деление (/) и по модулю (%).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...