Wykonujemy na rozruszanie się trzy proste ćwiczenia związane z rekurencją. Do dzieła.

Ok, potęgowanie:

function power(base, exponent){

    if(exponent === 0)
        return 1;
    
    return base * power(base, exponent-1);

}

Czyli na przykład:

  • 2^3 to 2 * 2 * 2 * 1

Proste. Ok, teraz mnożenie:

function multiply(x, y){
    if(y === 0)
        return 0;

    return x + multiply(x, y - 1);
}

console.log(multiply(2,10));
//20

Też chyba proste. Ok, suma aż do jakiejś liczby:

function sumTo(num){
    if(num === 0)
        return 0;

    return num + sumTo(num-1);
}

console.log(sumTo(3)); //6
console.log(sumTo(4)); //10
console.log(sumTo(5)); //15

Nic w porównaniu z zaawansowanymi rekurencjami, które robiliśmy przeszukując drzewo DOM własnymi querySelectorami. Natomiast z rekurencją wygląda sprawa tak, że trzeba rozwiązywać różne, także banalne i proste w rozwiązaniach problemy.

Bo często trudno jest wpaść na rekurencyjne rozwiązanie. Dopiero jak zobaczymy jak ktoś to zrobił to mamy olśnienie.

Oczywiście to działa tak, że jak ćwiczymy rekurencję na tablicach to potem łatwiej rozwiązujemy rekurencyjnie problemy tablicowe. Jak na drzewach to potem świetnie rozwiązujemy sprawy typu napisz własny querySelector.

I dlatego trzeba być ciekawskim i sprawdzać różne podejścia do różnych problemów.