Как из функции сделать рекурсивную функцию?

Для заданного целого десятичного числа N получить его представление в p-ичной системе счисления (p < 10). Нужно написать функцию и рекурсивную функцию. Не могу понять, как сделать рекурсию в этой функции. Помогите и объясните пожалуйста, если не сложно. Спасибо.

String DecToX (UINT num, BYTE p)
{
  String res0 = "", res = IntToStr(num) + " (10)   =   ";
  if (p>1 && p<10)
  {
    do
    {
      res0 = IntToStr(num%p) + res0;
      num/=p;
    }
    while (num>0);
    res += res0 + " (" + IntToStr(p) + ")";
  }
  else
    if (p==1)
    {
      for (UINT i = 0; i < num; i++)
        res0 += "0";
      res += res0 + " (1)";
    }
  else
    res = "Основание системы счисления p должно быть больше 0 и меньше 10.";
  return res;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  ShowMessage(DecToX(973, 5));
}

Ответы (1 шт):

Автор решения: Harry

Вот пример рекурсивной функции, преобразующей число n в систему счисления 2 <= p <= 10.

Смысл: результат есть преобразование в p-ичную систему числа n/p, к которому приписана цифра n%p (n = (n/p)*p + n%p).

Заметим, кстати, что ваше

Для заданного целого десятичного числа N

имеет смысл только если N — строка. Если N — число в памяти компьютера, то ни о какой десятичности говорить не приходится.

string toP(int n, int p)
{
    if (n == 0) return "";
    return toP(n/p,p) + to_string(n%p);
}
→ Ссылка