这一关提示里面说的是需要用while循环嵌套另一个while循环,我想了半天写出了这样的代码:
while !isOnOpenSwitch { //没在开着的开关上时
//循环1:
while is Blocked { //如果不能前行
turnRight() //右转
}
//循环2:
while !isBlocked { //如果能够前行
moveForward() // 前进一步
if isOnClosedSwitch { //如果在关闭的开关上
toggleSwitch() //打开开关
}
}
}
值得注意的是,最外面一个循环调节我一开始写成了 while !isOnCloseSwitch,结果在最后无法结束循环,可怜的小人一直在走来走去。。
但是看过网上其他人的写法,发现这样三重嵌套也可以:
while !isOnOpenSwitch{ //没找到开着的开关时,1
while isBlocked { //前面不能走。2
while isOnClosedSwitch { //找到闭着的开关时 //3
toggleSwitch() //3.3
}
turnRight() //2.2
}
moveForward() //1.1
}
作者:PTE深圳IRE
链接:https://www.jianshu.com/p/61b916f61e37
这样写的好处是把判断都嵌套在一个大循环内,减少跳出次数,我的那个好处可能是毕竟直观(因为只有两层嵌套)。三层嵌套的值得加强理解学习。
放一个通关截图以资鼓励!

======================
后续:又更改了一版,发现这样也可以
while !isOnOpenSwitch {
while !isBlocked {
moveForward()
if isOnClosedSwitch {
toggleSwitch()
}
}
turnRight()
}
并且发现上面网友的代码运行后,最后打开开关后,又多循环了一次,而且最里面的嵌套用if或者while都可以。庆幸我这个运行起来是没有问题的,不管是之前那一版还是现在这一版。新技能get!
网友评论