我创建的Javascript |递归函数返回未定义的结果以及正确的答案
当我运行下面的递归函数时,它返回“CLundefined”,这里“CL”是正确的答案。据我所知,我已经定义了所有变量。问题是什么我创建的Javascript |递归函数返回未定义的结果以及正确的答案,javascript,Javascript,当我运行下面的递归函数时,它返回“CLundefined”,这里“CL”是正确的答案。据我所知,我已经定义了所有变量。问题是什么 var roman = { M: 1000, CM: 900, D: 500, CD: 400, C: 100, XC: 90, L: 50, XL: 40, X: 10, IX: 9, V: 5, IV: 4, I: 1 }; function convertToRoman(num) { for (var
var roman = {
M: 1000,
CM: 900,
D: 500,
CD: 400,
C: 100,
XC: 90,
L: 50,
XL: 40,
X: 10,
IX: 9,
V: 5,
IV: 4,
I: 1
};
function convertToRoman(num) {
for (var key in roman) {
var check = num >= roman[key];
console.log(key);
if (check) {
return key + convertToRoman( num -= roman[key])
}
}
}
convertToRoman(150);
最后,
check
是false
,因此if()
块不会运行。因此,缺省返回作为函数return提供——您猜,缺省值是,undefined
最好在函数中使用一个局部变量(在for循环之外),然后返回该变量。最终
检查是否为false
,以便if()
块不会运行。因此,缺省返回作为函数return提供——您猜,缺省值是,undefined
最好在函数中使用局部变量(在for循环之外),然后返回该变量。在本例中,您缺少了num==0
。这是为了停止递归循环
varroman={M:1000,CM:900,D:500,CD:400,C:100,XC:90,L:50,XL:40,X:10,IX:9,V:5,IV:4,I:1};
函数转换器(num){
如果(num==0)返回“”;
for(罗马字母的var键){
if(num>=roman[key])返回key+convertToRoman(num-=roman[key]);
}
}
控制台日志(Convertoroman(150))代码>在本例中,您缺少了num==0
。这是为了停止递归循环
varroman={M:1000,CM:900,D:500,CD:400,C:100,XC:90,L:50,XL:40,X:10,IX:9,V:5,IV:4,I:1};
函数转换器(num){
如果(num==0)返回“”;
for(罗马字母的var键){
if(num>=roman[key])返回key+convertToRoman(num-=roman[key]);
}
}
控制台.日志(转换器阿曼(150))代码>只是为了咯咯笑,但是任何想要迭代示例的人:
const-ROMAN={
M:1000,
厘米:900,
D:500,
CD:400,
C:100,
XC:90,
L:50,
XL:40,
X:10,
IX:9,
五:五,,
四:4,,
I:1
};
设x=Object.keys(ROMAN.reverse();
设y=Object.values(ROMAN.reverse();
函数toRoman(n){
n=(n |=0)<0?-n:n;
如果(n==0)返回null;
让我们“”;
而(n!==0){
设i=((n>=y[y.length-1]&&y.length)||
y、 findIndex(m=>m>n))-1;
s+=x[i];
n-=y[i];
}
返回s;
}
console.log([
0, -11, 100, 103, 234, 1928, 9832, 221, -23.3, 10.1, -0.3
].地图(托罗曼)代码>只是为了咯咯笑,但是任何想要迭代示例的人:
const-ROMAN={
M:1000,
厘米:900,
D:500,
CD:400,
C:100,
XC:90,
L:50,
XL:40,
X:10,
IX:9,
五:五,,
四:4,,
I:1
};
设x=Object.keys(ROMAN.reverse();
设y=Object.values(ROMAN.reverse();
函数toRoman(n){
n=(n |=0)<0?-n:n;
如果(n==0)返回null;
让我们“”;
而(n!==0){
设i=((n>=y[y.length-1]&&y.length)||
y、 findIndex(m=>m>n))-1;
s+=x[i];
n-=y[i];
}
返回s;
}
console.log([
0, -11, 100, 103, 234, 1928, 9832, 221, -23.3, 10.1, -0.3
].地图(托罗曼)代码>