Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/478.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 阿拉伯数字中罗马数字的转换_Javascript_Converters_Roman Numerals - Fatal编程技术网

Javascript 阿拉伯数字中罗马数字的转换

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,

我是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, 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