2014-12-16 2 views
-1

Я читал псевдокод алгоритма поиска по глубине ниже below. Согласно псевдокоду, я понимаю, как определена глобальная переменная в пределах DFS(G), но мне трудно понять, как возможно, что глобальная переменная в пределах DFS(G) не передается в рекурсивный метод DFS-visit(G, u), но time увеличивается с помощью рекурсивного метода. Я пытался делать писать код вот так:Проблема с пониманием того, как глобальная переменная передается в алгоритме первого поиска глубины псевдокод

class Algo{ 
    ... 

    public void dfs(Graph g){ 
      .... 
      long time = 0; 
      // for-loop 
       dfs_visit(g , u); 
    } 

    public void dfs_visit(Graph G, Vertex u){ 
      long time = time + 1; 
      ..... 
    } 
} 

И это порождает ошибку компиляции в dfs-visit(G, u):

error: variable time might not have been initialized long time = time + 1;

Я ощущаю, что я имею в виду, это неправильно, но я просто не понимаю, как time может быть добавлен в dfs-vist метод без передачи в качестве аргумента. Пожалуйста, помогите мне исправить мою логику.

+1

в Java, имена классов в 'UpperCamelCase' и имена методов в' lowerCamelCase' вы его назад и делает людей, которые могли бы помочь вам выколоть им глаза! –

+0

ОК. Извини за это. Я отредактирую этот файл – mynameisJEFF

+1

, прежде чем вы попытаетесь написать DFS в java, я бы предложил сначала познакомиться с синтаксисом языка. В настоящее время вы застреваете в вопросах компиляции, забываете о сложной логике. – Pranalee

ответ

0

time, как представляется, является глобальной переменной в псевдокоде, вы можете ввести ее в качестве переменной поля (например, класса) вместо локальной переменной.

Смежные вопросы