将正整数转换为罗马数字的 JavaScript 程序


我们必须编写一个 JavaScript 程序来生成给定整数的罗马数字表示形式。代码应接受一个正整数作为输入,并能够将其转换为等效的罗马数字。

示例场景

Input: num = 10; Output: roman_num = X

如何将整数转换为罗马数字

为了解决给定的问题,定义一个 函数 将整数转换为罗马数字。此函数将接收一个正整数作为输入,并返回相应的罗马数字字符串。它将使用一个对象数组将整数映射到罗马数字。

定义的函数将遍历数组。迭代过程将从最大值到最小值开始。在每次迭代中,它将检查给定数字是否大于或等于罗马符号的当前值。如果是,则该函数将相应符号附加到罗马数字字符串中,并从给定的输入数字中减去该值。此过程将持续运行,直到给定的输入数字小于当前值。循环完成后,程序将生成输入数字的罗马数字表示形式。

使用 for 循环

在这种方法中,我们使用 for 循环实现上述讨论的逻辑。在 JavaScript 中,for 循环 用于重复执行一段代码,直到指定条件计算结果为 false。当迭代次数固定且已知时,使用此循环。

示例

一个 JavaScript 程序,演示了如何使用 for 循环将正整数转换为罗马数字。

Open Compiler
//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),因为除了输入大小外,我们还使用了固定数量的额外空间。

Learn JavaScript in-depth with real-world projects through our JavaScript certification course. Enroll and become a certified expert to boost your career.

使用递归

递归是一种编程方法,其中函数调用自身来解决给定的问题,是另一种在本文中实现上述逻辑的方法。

示例

下面的 JavaScript 程序使用递归将正整数转换为罗马数字。

Open Compiler
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

更新于: 2024-09-30

536 次浏览

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告