Как из функции сделать рекурсивную функцию?
Для заданного целого десятичного числа 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);
}