使用前端js实现了下九连环的玩儿法,控制台打印了所有的摘下和挂上的步骤。
有兴趣的可以拿去,转成java或者其它语言实现下,下面贴所有代码
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<script type="text/javascript">
// 总体思想是使用递归,完成挂上和摘下操作,每个操作都设置一个递归循环的出口
// 摘下九连环 方法
function takeOff(rings){
var len = rings.length;
// len - 1 = index
takeOffIndex(rings, len - 1);
}
// 摘下指定的位置 及 之前位置的 环
function takeOffIndex(rings, index){
// 先判断当前位置的环的状态,如果是摘下,继续往前摘,如果是挂上,则判断是否可以摘下
if(rings[index] == 0){
// 如果到0了,就不再往前了
if(index == 0){
return ;
}
takeOffIndex(rings, index - 1);
return ;
}
// 递归出口
if(index == 0){
rings[0] = 0; // 摘下当前位置的环,然后返回
console.log(rings);
return ;
}
// 判断是否可以摘下当前环,条件:
// 1,index 的前一个位置的环必须是挂上状态;2,index 的前两个位置及