将正整数转换为罗马数字的 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