Mengelakkan Jadual Carian: Algoritma yang Cekap untuk Menukar Integer kepada Perkataan
Menukar integer kepada perwakilan perkataan mereka ialah tugas pengaturcaraan biasa. Walaupun jadual carian menyediakan penyelesaian mudah untuk nombor yang lebih kecil, ia menjadi sukar digunakan untuk nilai yang lebih besar. Artikel ini membentangkan kaedah yang lebih berskala dan cekap yang mengelakkan penggunaan jadual carian besar.
Inti pendekatan ini melibatkan beberapa tatasusunan:
ones
: Tatasusunan yang mengandungi perkataan untuk nombor satu digit (cth., "Satu", "Dua", ... "Sembilan").teens
: Tatasusunan yang mengandungi perkataan untuk nombor sebelas hingga sembilan belas.tens
: Tatasusunan yang mengandungi perkataan untuk gandaan sepuluh (cth., "Twenty", "Thirty", ... "Ninety").thousandsGroups
: Tatasusunan yang mengandungi awalan untuk beribu-ribu, berjuta-juta dan berbilion-bilion.Jantung algoritma ialah fungsi FriendlyInteger
, fungsi rekursif yang mengambil tiga parameter:
n
: Integer untuk ditukar.leftDigits
: Perkataan perwakilan digit di sebelah kiri n
(digunakan untuk rekursi).thousands
: Kumpulan beribu-ribu semasa (unit, beribu-ribu, berjuta-juta, dll.).FriendlyInteger
memecahkan integer input secara rekursif, membina perwakilan perkataan sekeping demi sekeping. Contohnya, menukar 1532:
FriendlyInteger(32, "One Thousand", 1)
: Memproses tempat beribu-ribu, menghasilkan "Seribu".FriendlyInteger(32, null, 0)
: Mengendalikan baki 32.FriendlyInteger(2, "Thirty", 0)
: Memproses digit puluhan, menjana "Tiga Puluh".FriendlyInteger(0, "Two", 0)
: Mengendalikan digit unit, menghasilkan "Dua".Fungsi IntegerToWritten
berfungsi sebagai titik masuk, mengendalikan kes khas seperti sifar dan nombor negatif sebelum memanggil FriendlyInteger
untuk penukaran utama.
Pendekatan rekursif ini, digabungkan dengan penggunaan tatasusunan yang telah ditetapkan, menyediakan penyelesaian yang cekap dan berskala untuk menukar integer kepada bentuk bertulisnya tanpa memerlukan jadual carian yang luas, menjadikannya sesuai untuk mengendalikan pelbagai input berangka.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menukar Integer dengan Cekap kepada Borang Tertulisnya Tanpa Menggunakan Jadual Carian?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!