Questo è un esempio di ricorsione?

5

Sto implementando l'ereditarietà di qualcosa chiamato Contesti. Ogni contesto contiene un collegamento al suo contesto genitore. Se il contesto è il contesto radice, il suo genitore è nullo.

Per risalire l'albero di ereditarietà e ottenere i dati da ciascun contesto, voglio farlo (in pseudocodice)

private Hashtable getDataAsMap() {
    Hashtable map  =  this.parent != null  ?  
                          this.parent.getDataAsMap()  :  
                          new Hashtable();

    // add my data

    return map;

}

Questa ricorsione? Sto chiamando lo stesso metodo, ma su un oggetto diverso. Questo conta ancora? In caso contrario, come lo chiameresti?

    
posta chama 14.01.2013 - 20:16
fonte

1 risposta

10

Sì. Questo soddisfa i due criteri per un algoritmo ricorsivo:

  1. Un algoritmo che accetta uno o più parametri e chiama se stesso con una versione semplificata del parametro (s) e
  2. Un caso base che indica all'algoritmo dove interrompere la ricorsione.

Tuttavia, questo sembra un modo strano per farlo. Continua a cercare l'albero fino a trovare un nodo radice (un nodo senza genitore), quindi restituisce un nuovo oggetto che non è effettivamente associato a nessuno dei nodi. Il risultato finale sarà identico a dire return new Hashtable(); , ma più lento. Sei sicuro che sia quello che intendevi?

    
risposta data 14.01.2013 - 20:19
fonte

Leggi altre domande sui tag