我在解决以下流程图问题时遇到问题。你能尽快帮助我吗?
链接如下: - 问题3和问题4:
答案 0 :(得分:0)
让我们先了解说明。
指令3 有点含糊不清,无论是指箱号还是方框中的号码。当你阅读其余的指令都涉及对指令2进行更改时,这变得更加简单。因此我们可以得出结论,它意味着第一个框号,它也是指令文本中提到的第一个数字而不是框中的数字。
指令4 由于看似多余的“其中”这个词的使用而有点令人困惑。如果指令4被解释为意味着查看框6中的数字并转到该指令编号,如果您尝试解决问题的其余部分,我们就会有一个无限循环。但如果我们将其解释为:
var instruction2Variables=[null,1,10];
var boxes=[null,8,6,5,7,4,2,2,11,8,-2,2,1];
var instructions=[];
instructions[1]=function()
{
boxes[11]=boxes[11]+3;
};
instructions[2]=function()
{
instruction2Variables[2]=instruction2Variables[1];
};
instructions[3]=function()
{
return instruction2Variables[1]%2==1;
}
instructions[4]=function()
{
return boxes[boxes[6]];
}
instructions[5]=function()
{
instruction2Variables[1]+=2;
}
instructions[6]=function()
{
boxes[11]=boxes[5]+boxes[11];
}
instructions[7]=function()
{
instruction2Variables[1]+=boxes[12];
instruction2Variables[2]-=boxes[12];
}
instructions[8]=function()
{
return instruction2Variables[2]<boxes[1];
}
instructions[9]=function()
{
return 2;
}
var loops=0;
for(var i=1;i<10;i++)
{
loops++;
if(loops>1000){console.log('breaking an endless loop...');break;}
console.log('Instruction '+i);
var result=instructions[i]();
if(i==3)
{
if(!result){i=6;continue;}
}else if(i==4){
console.log('Going to instruction '+result);
i=result;continue;
}else if(i==8){
if(result){i=10;break;}
}
}
boxes.shift();//get rid of our leading null value
console.log(boxes);//[8, 6, 5, 7, 4, 2, 2, 11, 8, -2, 5, 1]
然后我们没有无限循环。
让我们编写一些代码,以下是您可以在JavaScript控制台中执行的JavaScript,其中chrome是ctrl + shift + j:
8
首先我们需要实现yes / no,因为指令3实际上指的是错误的方式。在指令1中没有问题,因此指令3的“否”结果应该指向上意味着如果“是”则再次重复指令1。
指令2 乍一看似乎超出了我们的12个方框,但这实际上意味着我们正在增加我们存储永远为零的结果。
解决这个问题非常简单。我们的第一个循环我们将在框2中存储0。我们的第二个循环我们将在框4中存储0。我们的第三个循环我们将在框6中存储0。在此之后,我们必须在此处停止循环指向不破坏我们的数据。我们在第一时间的答案似乎是6,但是我们正在更改指令1中的盒数据并更改指令2中的指令1.因此,在我们第三次执行指令1之后,我们将有2,4和6的方框然后我们将第三次运行指令2,从而增加对方框8的方框引用。最后我们想要打破循环,所以我们需要方框3来存储值{{1}}。