Das Konvertieren einer Ganzzahl in ihre Literaldarstellung ist eine häufige Programmieraufgabe. Allerdings kann es eine Herausforderung sein, Effizienz zu erreichen, ohne große Nachschlagetabellen zu verwenden. In diesem Artikel wird eine Möglichkeit untersucht, diese Einschränkung zu überwinden.
Der Kern der Lösung ist eine Klasse namens HumanFriendlyInteger
. Es enthält eine Reihe von Arrays zur Darstellung verschiedener Nennwerte (z. B. Einsen, Zehner usw.) und eine Methode namens FriendlyInteger
, die die wörtliche Darstellung rekursiv aufbaut.
FriendlyInteger
-Methode arbeitet rekursiv, um Literalzahlen zu konstruieren. Der Vorgang ist wie folgt:
n
0 ist, wird das aktuelle leftDigits
zurückgegeben (wird zur Verarbeitung der Ziffer ganz links verwendet). n
kleiner als 10 ist, verwenden Sie das Einheitenarray direkt, um die Literalform abzurufen. Für Werte zwischen 10 und 19 wird ein Zehner-Array verwendet. n
zwischen 20 und 99 liegt, konvertieren Sie n % 10
(die Einerstelle) rekursiv und stellen Sie ihr die Zehnerstelle voran (z. B. „Dreißig“). n % 100
(Zehner- und Einerstelle) und stellt die Hunderterstellendarstellung davor voran. n % 1000
rekursiv und hängt die entsprechende Tausendstelgruppendarstellung an (z. B. „Tausend“, „Million“). Wenn n % 1000
0 ist, endet die Rekursion. IntegerToWritten
ist eine Wrapper-Funktion, die den Sonderfall negativer Zahlen und 0 verarbeitet und „Null“ zurückgibt.
Bedenken Sie die folgenden Anwendungsbeispiele:
<code class="language-csharp">using HumanFriendlyInteger; public class Program { public static void Main() { int number = 21; string writtenNumber = IntegerToWritten(number); Console.WriteLine($"{number} 的文字形式:{writtenNumber}"); } }</code>
Dieser Code gibt Folgendes aus:
<code>21 的文字形式:Twenty One</code>
Dieser rekursive Ansatz bietet eine effiziente Möglichkeit, Ganzzahlen in ihre Literalform umzuwandeln, ohne auf große Nachschlagetabellen angewiesen zu sein. Durch die Aufteilung des Problems in kleinere Teile erzielt dieser Ansatz die gewünschten Ergebnisse mit minimalem Overhead.
Das obige ist der detaillierte Inhalt vonWie können wir Ganzzahlen in C# effizient in ihre geschriebenen Zahlenäquivalente umwandeln?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!