Рекурсивная функция в C, которая возвращает n-ю цифру справа от данного числа - PullRequest
0 голосов
/ 31 декабря 2018

Функция int digit(int number,int position) должна быть рекурсивной и возвращать цифру «число» в положении «позиция» справа.Так что в моем коде, где число = 5864 и позиция = 3, функция должна возвращать «8».Вот основной код.

#include <stdio.h>

int digit(int number,int position);

 int main (){
int number=5864, position=3, result;
result=digit(number,position);
printf("result: %d\n",result );
system("pause");

return 0;
}

int digit(int number,int position){}

Я знаю, что этот вопрос уже задавался, но я действительно изо всех сил пытаюсь сделать его рекурсивным.Спасибо за ваше внимание.

Ответы [ 2 ]

0 голосов
/ 31 декабря 2018

Для определения рекурсии вам понадобятся две вещи: правило о том, как включить рекурсию, и правило о том, как остановить рекурсию.Для этого варианта использования вы можете формализовать эти правила следующим образом:

  • Если position == 1, вернуть крайнюю правую цифру
  • Если position> 1, разделить numberна 10 с уменьшением позиции

Или в коде C:

int digit(int number, int position) {
    if (position == 1) {
        return number % 10;
    }
    return digit(number / 10, --position);
}

Примечание. Этот код немного упрощен и не обрабатывает недопустимые входные данные.Не положительный position отправит этот код в бесконечную рекурсию.

0 голосов
/ 31 декабря 2018
int digit(int number,int position){
        if(position==1) return number%10;
      return digit(number/10,--position);
   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...