Я пытаюсь сделать что-то:Какой лучший подход сделать это в C#?
Input <= 3432
Output => List contains 7 items i.e. (3, 1000, 4, 100, 3, 10, 2)
Для этого я написать функцию в C#:
public BigInterger FromDecimal()
{
List<BigInteger> numbers = new List<BigInteger>();
BigInteger number = BigInteger.Parse(NumberString);
while (number > 0)
{
if (number >= 1000000000)
{
numbers.Add(number/1000000000);
number = number % 1000000000;
numbers.Add(1000000000);
}
else if (number >= 100000000)
{
numbers.Add(number/100000000);
number = number % 100000000;
numbers.Add(100000000);
}
else if (number >= 10000000)
{
numbers.Add(number/10000000);
number = number % 10000000;
numbers.Add(10000000);
}
else if (number >= 1000000)
{
numbers.Add(number/1000000);
number = number % 1000000;
numbers.Add(1000000);
}
else if (number >= 100000)
{
numbers.Add(number/100000);
number = number % 100000;
numbers.Add(100000);
}
else if (number >= 10000)
{
numbers.Add(number/10000);
number = number % 10000;
numbers.Add(10000);
}
else if (number >= 1000)
{
numbers.Add(number/1000);
number = number % 1000;
numbers.Add(1000);
}
else if (number >= 100)
{
numbers.Add(number/100);
number = number % 100;
numbers.Add(100);
}
else if (number >= 10)
{
numbers.Add(number/10);
number = number % 10;
numbers.Add(10);
}
else
{
numbers.Add(number);
number = 0;
}
}
return numbers;
}
Теперь я чувствую, что этот код слишком большой, так есть ли лучший подход для достижения это ?
Один лучший подход, который сразу же переходит на ум, чтобы добавить 1 в свой список. Будьте последовательны - у вас есть умножитель единиц пар пар для каждого, держите его таким образом до конца. Когда вы это сделаете, вам будет проще сделать цикл. Или даже лучше, не перечисляйте единицы вообще. При необходимости используйте 0s, а затем просто используйте некоторую арифметику по модулю. –
Лучшим способом является ** Рекурсия ** – Shaharyar
Этот вопрос не соответствует теме, потому что речь идет о коде, который работает как есть, без ошибок. Для критики или предложений по улучшению вашего кода, пожалуйста, спросите на http://codereview.stackexchange.com/ –