Нужно найти пифагоровы тройки через рекурсивную функцию
Понял, как сделать через обычную функцию, но нужно сделать через рекурсию. Пользователь задает значение, до которого нужно найти все пифагоровы тройки(чтобы ни одна из сторон не превышала заданное значение)
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;
}