var movingCount = function(m, n, k) { // 错误1 m var visited = new Array(m) for(let i = 0; i < m; i++){ // 错误2 n visited[i] = new Array(n).fill(false) } const sum=(x)=>{ var res=0 while(x!=0){ res+=x%10 x=Math.floor(x/10) } return res } const dfs=(i, j)=>{ // 错误3 不是sum[i] if(i<0 || j<0 ||i>=m || j>= n || visited[i][j]|| k==sum(i)+sum(j)){ return 0 } visited[i][j] = true return 1 + dfs(i + 1, j) + dfs(i, j + 1) } dfs(0,0) };这个代码错在哪里
时间: 2024-04-08 13:35:24 浏览: 71
这段代码存在几个问题:
1. 在创建`visited`数组时,应该是`visited = new Array(m)`,而不是`visited = new Array(n)`。
2. 在创建`visited`数组的内部循环时,应该是`visited[i] = new Array(n).fill(false)`,而不是`visited[i] = new Array(m).fill(false)`。
3. 在调用`sum(i)`和`sum(j)`时,应该是调用函数`sum(i)`和`sum(j)`,而不是直接使用`sum(i)`和`sum(j)`。
修改后的代码如下所示:
```javascript
var movingCount = function(m, n, k) {
// 错误1 m
var visited = new Array(m);
for(let i = 0; i < m; i++){
// 错误2 n
visited[i] = new Array(n).fill(false);
}
const sum = (x) => {
var res = 0;
while(x != 0){
res += x % 10;
x = Math.floor(x / 10);
}
return res;
}
const dfs = (i, j) => {
// 错误3 不是sum[i]
if(i < 0 || j < 0 || i >= m || j >= n || visited[i][j] || k == sum(i) + sum(j)){
return 0;
}
visited[i][j] = true;
return 1 + dfs(i + 1, j) + dfs(i, j + 1);
}
return dfs(0, 0);
};
```
这样修改后的代码应该能够正确运行。
阅读全文