Skip to content

Commit 88bbb1e

Browse files
committed
up
1 parent 87933d4 commit 88bbb1e

File tree

1 file changed

+17
-3
lines changed

1 file changed

+17
-3
lines changed

_posts/JavaScript/2014-08-29-一个计算数字的步数算法.md

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ tags : [算法]
3131

3232
* 排除1和2的情况
3333

34-
下面先提供两个工具函数
34+
下面先提供三个工具函数
3535

3636
```js
3737

@@ -47,6 +47,18 @@ function print(arg){
4747
}
4848
}
4949

50+
// 检查是否是正反的走法
51+
function hasRepeat(src, dist){
52+
for(var i = 0, len = src.length; i < len ; i++){
53+
if(dist.length == src[i].length){
54+
if(dist[0] == src[i][1]){
55+
return true;
56+
}
57+
}
58+
}
59+
return false;
60+
}
61+
5062
```
5163

5264
下面贴出算法的实现
@@ -85,8 +97,10 @@ function countSteps(n){
8597
if(i ==0 || i == 1){
8698
linearg.push(calculate(arg.slice(0,2)));
8799
Array.prototype.push.apply(linearg, arg.slice(2, arg.length));
88-
result.push(linearg);
89-
combine(linearg.slice(0));
100+
if(!hasRepeat(result, linearg)){
101+
result.push(linearg);
102+
combine(linearg.slice(0));
103+
}
90104
return;
91105
}
92106
}

0 commit comments

Comments
 (0)