Другие языки программирования и технологии

Помогите с C++, буду благодарен

Задача 1
Заданы три функции y1=x3, y2=x3+1, y3= 1/(1+x2). Определить, являются ли эти функции четными или нечетными.
Задание 2
От прямоугольника со сторонами a и b каждый раз отрезается квадрат максимальной площади. Написать рекурсивную функцию, определяющую число таких квадратов.
Для действительных чисел число квадратов бесконечно. В задании 2 речь идет о натуральных числах.

#include <iostream>
using namespace std;

int cs(unsigned a, unsigned b) {
return a && b? 1 + (a > b? cs(a - b, b) : cs(a, b - a)) : 0;
}

int main() {
unsigned a, b;
cout << "a b? ";
cin >> a >> b;
cout << cs(a, b) << endl;
cout << csi(a, b) << endl;
}
Талант Абдыраев
Талант Абдыраев
76 885
Лучший ответ
Александр Олейник ну вот видиш, чувак тебе написал рекурсивно)
а вообще я никогда не использую unsigned, лучше зделать алиас
typedef unsigned int uint;

uint cs(uint a, uint b){
 return a && b? 1 + (a > b? cs(a - b, b) : cs(a, b - a)) : 0;
}
ну смотри есть напримеря прямоугольник со сторонами 120 и 100, функция даже необязательна писать рекурсивно, это излишнее усложнение, но если в задании сказано так то можно и так зделать, просто находим минимум из двух чисел, минимум (120, 100) -> 100, и вычитаем из большево меньшее, 120 - 100 -> 20, значит у нас уже остаётся прямоугольник 20 на 100, опять повторяем также, минимум (20, 100) -> 20, 100 - 20 -> 80, остаётся 20 на 80;
минимум (20, 80) -> 20, 80 - 20 -> 60, остаётся 20 на 60;
минимум (20, 60) -> 20, 60 - 20 -> 40, остаётся 20 на 40;
минимум (20, 40) -> 20, 40 - 20 -> 20, остаётся 20 на 20;
20 на 20 уже квадрат, всё конец, самовыпил

вот код

function сколько_квадратов (a, b){
  let i = 1;
  while(a != b){
    let min = Math.min(a, b);
    let max = Math.max(a, b);
    a = min; b = max - min;
    console.log("найден квадрат " + a + " " + a);
    i++;
  }
  return i;
}
Даурен Ибраев спасибо но мне нужен код)
Талант Абдыраев Твоя функция не рекурсивная, как требуется в задании.