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