while循环javascript逻辑
有人能给我解释一下吗?这是自由密码营中罗马数字挑战赛的一部分——这不是我的,我自己做的,但更多的是密码。我试图理解这一点来提高我自己。不管怎么说,while循环完全把我搞砸了。任何帮助都会很棒while循环javascript逻辑,javascript,loops,Javascript,Loops,有人能给我解释一下吗?这是自由密码营中罗马数字挑战赛的一部分——这不是我的,我自己做的,但更多的是密码。我试图理解这一点来提高我自己。不管怎么说,while循环完全把我搞砸了。任何帮助都会很棒 function romans(num){ var roman = ""; var romanNumerals = ["M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"]; var numbers = [1000,90
function romans(num){
var roman = "";
var romanNumerals = ["M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"];
var numbers = [1000,900,500,400,100,90,50,40,10,9,5,4,1];
for (var i=0; i<numbers.length; i++) {
//If the num was 5 then then it would read 5 greater than 1000?
while (num >= numbers[i]) {
roman = roman + romanNumerals[i]
//5 minus 1000?
num = num - numbers[i]
}
}
return roman;
}
console.log(romans(5))
函数romans(num){
var roman=“”;
数字=[“M”、“CM”、“D”、“CD”、“C”、“XC”、“L”、“XL”、“X”、“IX”、“V”、“IV”、“I”];
变量数=[1000900500400100,90,50,40,10,9,5,4,1];
对于(变量i=0;i=number[i]){
罗马=罗马+罗马数字[i]
//5减1000?
num=num-数字[i]
}
}
返回罗马;
}
控制台日志(罗马书(5))
num
以所需的输入开始,然后您可以找到从最大的罗马数字(数字[0]
)开始加起来的数字
重复while循环,因为您可能需要该字母的多个副本(即,“III”==3
)
romans(5)
将不会触发while循环,直到numbers[10]
(因为正如您所说的5>=1000==false
),此时您将字符V附加到roman
,并从num
中减去5。while循环将不再触发,因为num
现在为0
试着用romans(3001)仔细思考一下,你会看到while循环对M/1000触发3次,然后跳过10次,然后对I/1触发一次
函数romans(num){
var roman=“”;
变量罗马数字=[“M”、“CM”、“D”、“CD”、“C”、“XC”、“L”、“XL”、“X”,
“九”、“五”、“四”、“一”];
变量数=[1000900500400100,90,50,40,10,9,5,4,1];
对于(变量i=0;i=number[i]){
控制台日志(“输入”);
罗马=罗马+罗马数字[i]
//5减1000?
num=num-数字[i]
log('减法:'+数字[i]);
}
}
返回罗马
}
console.log(romans(44))
/5减1000?
只有当数学被完全破坏并且5>=1000
将为真:)对于num==5
而言,while
循环将只对i==10
执行一次,并使im变慢:'(