將正整數轉換為羅馬數字的 JavaScript 程式
我們必須編寫一個 JavaScript 程式來生成給定整數的羅馬數字表示形式。程式碼應接受一個正整數作為輸入,並能夠將其轉換為等效的羅馬數字。
示例場景
Input: num = 10; Output: roman_num = X
如何將整數轉換為羅馬數字
為了解決給定的問題,定義一個 函式 將整數轉換為羅馬數字。此函式將接收一個正整數作為輸入,並返回相應的羅馬數字字串。它將使用一個物件陣列將整數對映到羅馬數字。
定義的函式將遍歷陣列。迭代過程將從最大值到最小值開始。在每次迭代中,它將檢查給定數字是否大於或等於羅馬符號的當前值。如果是,則該函式將相應符號附加到羅馬數字字串中,並從給定的輸入數字中減去該值。此過程將持續執行,直到給定的輸入數字小於當前值。迴圈完成後,程式將生成輸入數字的羅馬數字表示形式。
使用 for 迴圈
在這種方法中,我們使用 for 迴圈實現上述討論的邏輯。在 JavaScript 中,for 迴圈 用於重複執行一段程式碼,直到指定條件計算結果為 false。當迭代次數固定且已知時,使用此迴圈。
示例
一個 JavaScript 程式,演示瞭如何使用 for 迴圈將正整數轉換為羅馬數字。
//function for converting integer to roman
function intToRoman(num) {
if (typeof num !== 'number' || num <= 0 || num > 3999) {
return 'Invalid number';
}
const romanSymbols = [
{ value: 1000, symbol: 'M' },
{ value: 900, symbol: 'CM' },
{ value: 500, symbol: 'D' },
{ value: 400, symbol: 'CD' },
{ value: 100, symbol: 'C' },
{ value: 90, symbol: 'XC' },
{ value: 50, symbol: 'L' },
{ value: 40, symbol: 'XL' },
{ value: 10, symbol: 'X' },
{ value: 9, symbol: 'IX' },
{ value: 5, symbol: 'V' },
{ value: 4, symbol: 'IV' },
{ value: 1, symbol: 'I' }
];
let romanNumber = '';
for (let i = 0; i < romanSymbols.length; i++) {
while (num >= romanSymbols[i].value) {
romanNumber += romanSymbols[i].symbol;
num -= romanSymbols[i].value;
}
}
return romanNumber;
}
console.log("The roman numbers for the given integers")
console.log(intToRoman(-10));
console.log(intToRoman(46));
console.log(intToRoman(1995));
console.log(intToRoman(5000));
以上程式碼的輸出為:
The roman numbers for the given integers Invalid number XLVI MCMXCV Invalid number
複雜度
程式碼的時間複雜度為線性 O(n),其中 n 為輸入數字。程式碼的空間複雜度為常數 O(1),因為除了輸入大小外,我們還使用了固定數量的額外空間。
使用遞迴
遞迴是一種程式設計方法,其中函式呼叫自身來解決給定的問題,是另一種在本文中實現上述邏輯的方法。
示例
下面的 JavaScript 程式使用遞迴將正整數轉換為羅馬數字。
function intToRoman(num, romanNumber = '', i = 0) {
const romanSymbols = [
{ value: 1000, symbol: 'M' },
{ value: 900, symbol: 'CM' },
{ value: 500, symbol: 'D' },
{ value: 400, symbol: 'CD' },
{ value: 100, symbol: 'C' },
{ value: 90, symbol: 'XC' },
{ value: 50, symbol: 'L' },
{ value: 40, symbol: 'XL' },
{ value: 10, symbol: 'X' },
{ value: 9, symbol: 'IX' },
{ value: 5, symbol: 'V' },
{ value: 4, symbol: 'IV' },
{ value: 1, symbol: 'I' }
];
if (typeof num !== 'number' || num < 0 || num > 3999) {
return 'Invalid number';
}
if (num === 0) {
return romanNumber;
}
while (num >= romanSymbols[i].value) {
romanNumber += romanSymbols[i].symbol;
num -= romanSymbols[i].value;
}
// recursive call
return intToRoman(num, romanNumber, i + 1);
}
console.log("The roman numbers for the given integers");
console.log(intToRoman(-10));
console.log(intToRoman(46));
console.log(intToRoman(1995));
console.log(intToRoman(5000));
以上程式碼將產生以下結果:
The roman numbers for the given integers Invalid number XLVI MCMXCV Invalid number
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP