2016-04-07 9 views
0
protected void up-heap(int j) { 
while (j > 1) {   // continue until reaching root (or break) 
    int p = parent(j); 
    if (compare(heap.get(j), heap.get(p)) >= 1) break; // heap property verified 
    swap(j, p); 
    j = p;        // continue from the parent's location 
}} 

wie diesen nicht-rekursive Code in rekursiv schreiben mit java.i nicht immer ist, wie diese versuchte, in recursive.i konvertieren viele Websites, aber ich habe keine Antwortrekursive Funktion für upheap Methode (wie kann ich diesen nicht-rekursive Methode in rekursiven schreiben)

+1

Ist diese Frage über C++ oder Java? – user2807083

Antwort

2

Der Punkt ist, die while Schleife in rekursive Methodenaufrufe zu schreiben. Dies ist sehr einfach:

protected void upHeap(int j) { 
    if (j <= 1) //this handles the condition of the original while loop 
    return; 
    int p = parent(j); 
    if (compare(heap.get(j), heap.get(p)) >= 1) 
    return; // this handles the break from the while loop 
    swap(j, p); 
    upHeap(p); // the recursive method call, replacing j with p 
} 
Verwandte Themen