我試圖做一些事情:什麼是更好的方法在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添加到列表中。保持一致 - 每個人都有倍數乘數單位,並保持這種方式到最後。當你這樣做時,你會發現製作循環更容易。或者更好的是,根本不要列出這些單位。必要時使用0,然後使用一些模算術。 –
最好的方法是**遞歸** – Shaharyar
這個問題似乎是無關緊要的,因爲它是關於正常工作的代碼,沒有錯誤。有關改進您的代碼的批評或建議,請查詢http://codereview.stackexchange.com/ –