Javascript 阿拉伯数字中罗马数字的转换
我是JavaScript新手,在网站的帮助下学习 本练习是编写一个转换器,将罗马数字从字符串“CDLXXIII”转换为阿拉伯数字 我用“while循环”编写了一段代码,但网站希望我使用递归函数 这是我的密码:Javascript 阿拉伯数字中罗马数字的转换,javascript,converters,roman-numerals,Javascript,Converters,Roman Numerals,我是JavaScript新手,在网站的帮助下学习 本练习是编写一个转换器,将罗马数字从字符串“CDLXXIII”转换为阿拉伯数字 我用“while循环”编写了一段代码,但网站希望我使用递归函数 这是我的密码: function roman(roemische){ let romBuchstaben = ['I','IV','V','IX','X','XL','L','XC','C','CD','D','CM', 'M']; let romZahlen = [1, 4, 5, 9, 10,
function roman(roemische){
let romBuchstaben = ['I','IV','V','IX','X','XL','L','XC','C','CD','D','CM', 'M'];
let romZahlen = [1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000];
let summe = 0;
while (roemische.length > 0){
let suchzeichen = roemische[0] + roemische[1];
if (romBuchstaben.indexOf(suchzeichen) !== -1){
summe += romZahlen[romBuchstaben.indexOf(suchzeichen)];
roemische = roemische.substr(2,roemische.length-2);
} else {
summe += romZahlen[romBuchstaben.indexOf(roemische[0])];
roemische = roemische.substr(1, roemische.length-1);
}
}
return summe;
}
(很抱歉var是德语)
我不太熟悉递归,有人能给我举个例子吗,如何使用递归
Marcel您好您可以通过将带有罗马符号的对象作为键和十进制值来稍微更改值的存储 为了封装递归函数,您可以添加一个退出条件,这里只是检查一个空字符串,在本例中返回零 然后检查对象中是否有两个字符,如果有,则取值并将再次调用函数的结果与字符串的其余部分相加 如果不是,则仅获取第一个字符和值,并再次调用函数以获取字符串的其余部分
函数罗马(数字){
常数
值={I:1,IV:4,V:5,IX:9,X:10,XL:40,L:50,XC:90,C:100,CD:400,D:500,CM:900,M:1000},
二=数字切片(0,2);
如果(!number)返回0;
返回两个值
?值[2]+罗马(数字片(2))
:值[number[0]]+罗马(number.slice(1));
}
console.log(罗马语('cdlxxiii'));//483