C++ rekurzija

Rekurzivne funkcije pozivaju same sebe.

#include <iostream>

int faktorijel(int n) {
    if (n <= 1) {
        return 1;
    }
    return n * faktorijel(n - 1);
}

int main() {
    int broj = 4;
    std::cout << "Faktorijel broja " << broj << " je " << faktorijel(broj) << std::endl;
    return 0;
}
#include <iostream>

int zbirCifara(int n) {
    if (n < 10) {
        return n;
    }
    return (n % 10) + zbirCifara(n / 10);
}

int main() {
    int broj = 456;
    std::cout << "Zbir cifara broja " << broj << " je " << zbirCifara(broj) << std::endl;
    return 0;
}
#include <iostream>

int fibonaci(int n) {
    if (n <= 1) {
        return n;
    }
    return fibonaci(n - 1) + fibonaci(n - 2);
}

int main() {
    int n;
    std::cout << "Unesite broj n: ";
    std::cin >> n;
    std::cout << n << ". Fibonacijev broj je: " << fibonaci(n) << std::endl;
    return 0;
}
#include <iostream>
#include <vector>

bool pronadjiPut(int matrica[5][5], int x, int y, int ciljX, int ciljY) {
    if (x < 0 || x >= 5 || y < 0 || y >= 5 || matrica[x][y] != 1) {
        return false;
    }

    if (x == ciljX && y == ciljY) {
        return true;
    }

    matrica[x][y] = 2;

    if (pronadjiPut(matrica, x + 1, y, ciljX, ciljY) ||
        pronadjiPut(matrica, x - 1, y, ciljX, ciljY) ||
        pronadjiPut(matrica, x, y + 1, ciljX, ciljY) ||
        pronadjiPut(matrica, x, y - 1, ciljX, ciljY)) {
        return true;
    }

    return false;
}

int main() {
    int matrica[5][5];
    int startX, startY, ciljX, ciljY;

    std::cout << "Unesite elemente matrice 5x5 (0 ili 1):" << std::endl;
    for (int i = 0; i < 5; i++) {
        for (int j = 0; j < 5; j++) {
            std::cin >> matrica[i][j];
        }
    }

    std::cout << "Unesite pocetne koordinate (i j): ";
    std::cin >> startX >> startY;
    std::cout << "Unesite ciljne koordinate (i j): ";
    std::cin >> ciljX >> ciljY;

    if (pronadjiPut(matrica, startX, startY, ciljX, ciljY)) {
        std::cout << "Put postoji!" << std::endl;
    } else {
        std::cout << "Put ne postoji." << std::endl;
    }

    return 0;
}