Member 14125164 Ответов: 2

Вернуть строку из функции


Итак, у меня есть эта рекурсивная функция, которая преобразуется в базу 12, и я пытаюсь сохранить результаты в строку, а затем вернуть эту строку в основную часть программы.

Вот мой код:

static string Convert(int i)
{
    string base12 = "0123456789AB";
    string ok="";
    if (i > 0)
    {
        int rem = i % 12;
        ok = ok + base12[rem];
        Convert(i = i / 12);
    }
   return ok;
}


Функция корректно преобразуется в базу 12, но возвращает только последнее число. Так, например, если я ввожу 163(основание 10), он преобразуется в 117(основание 12), но возвращает только число 7.

Так что если кто-то знает, как вернуть строку со всеми числами, я был бы очень признателен.

Спасибо!

Что я уже пробовал:

я попытался поставить
string ok="";
внешняя функция, но затем я получаю ошибку.

2 Ответов

Рейтинг:
2

CPallini

public static string base12(int n)
    {
      const string symbol = "0123456789AB";
      if (n == 0) return "";
      return base12(n / 12) + symbol[n % 12];
    }

Обратите внимание, что приведенная выше функция преобразует 0 к пустой строке (0 должно быть обработано имеет особый случай).


Рейтинг:
1

RickZeeland

Попробовать это:

using System;
					
public class Program
{
	static string ok = string.Empty;
	
	public static void Main()
	{
		string pad = Convert(163);
		Console.WriteLine(pad);
	}
	
	static string Convert(int i)
    {
    string base12 = "0123456789AB";
		
    if (i > 0)
    {
        int rem = i % 12;
        ok = base12[rem] + ok;
        Convert(i / 12);
    }

    return ok;
   }
}


Maciej Los

5ed!