Нужно найти пифагоровы тройки через рекурсивную функцию

Понял, как сделать через обычную функцию, но нужно сделать через рекурсию. Пользователь задает значение, до которого нужно найти все пифагоровы тройки(чтобы ни одна из сторон не превышала заданное значение)

void pifagor(int pif){
    for (int x = 1; x < pif; x++){
        for (int y = 1; y <pif; y++){
            for (int z = 1; z < pif; z++){
                if (x * x + y * y == z * z ) {
                    cout << "{ " << x << ";" << y << ";" << z << "}" << endl;
                }
            }
        }
    }
}

int main() {
int pif;
cin >> pif;
pifagor(pif);
return 0;
}

Ответы (1 шт):

Автор решения: Splinter1984

Можно попробовать следующее

#include <iostream>

int pifagor(const int limit, int bound, int n)
{
    if (bound != 0 && bound <= limit)
    {
        int m = n!=1? bound: pifagor(limit, --bound, n);

        if (n < m)
        {
            if (m*m+n*n <= limit)
            {
                std::cout << m*m-n*n << " " 
                          << 2*m*n   << " " 
                          << m*m+n*n << std::endl;
            }

            pifagor(limit, m, ++n);
        }
    }

    return ++bound;
}
→ Ссылка