------
## 最终结论
```python
from collections import deque

def canReach(arr, start):
    queue = deque([start])
    visited = set([start])
    
    while queue:
        current_index = queue.popleft()
        if arr[current_index] == 0:
            return True
        
        jump_forward = current_index + arr[current_index]
        jump_backward = current_index - arr[current_index]
        
        if jump_forward < len(arr) and jump_forward not in visited:
            visited.add(jump_forward)
            queue.append(jump_forward)
        
        if jump_backward >= 0 and jump_backward not in visited:
            visited.add(jump_backward)
            queue.append(jump_backward)
    
    return False
```