0
public void insert(int number) {
    heapArr.add(number);
    percolateUp(this.heapArr.size()-1);
}


public void percolateUp(int key) {
    if (getParent(key) >=0 && heapArr.get(getParent(key)) < heapArr.get(key)) {
        int temp = heapArr.get(getParent(key));
        heapArr.set(getParent(key), heapArr.get(key));
        heapArr.set(key, temp);
        percolateUp(getParent(key));
    } else {
        return;
    }
}

私は末尾再帰に頭を悩ませようとしていますが、私が学んだ限りでは、一部のコンパイラは、末尾再帰関数があり、余分なスタック フレームを作成しないかどうかを判断できます。上記の私の場合、再帰パーコレートが末尾再帰かどうかを調べようとしています。必ずしも関数からの戻りを待っているわけではないので、コンパイラはこれを末尾再帰として認識しますか?

4

0 に答える 0