Задача 1
Заданы три функции y1=x3, y2=x3+1, y3= 1/(1+x2). Определить, являются ли эти функции четными или нечетными.
Задание 2
От прямоугольника со сторонами a и b каждый раз отрезается квадрат максимальной площади. Написать рекурсивную функцию, определяющую число таких квадратов.
Другие языки программирования и технологии
Помогите с C++, буду благодарен
Для действительных чисел число квадратов бесконечно. В задании 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;
}
#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;
}
ну смотри есть напримеря прямоугольник со сторонами 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;
}
минимум (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;
}
Даурен Ибраев
спасибо но мне нужен код)
Талант Абдыраев
Твоя функция не рекурсивная, как требуется в задании.
Похожие вопросы
- Помогите срочно C#
- Помогите Модульное программирование. Заранее благодарю. C+
- Люди, помогите скачать C++!!
- помогите с C++
- помогите, пожалуйста, c делфи!
- помогите с C програм не выводит результаты
- Помогите Диск C сам заполняеться вот например выйду и диска памать 6гб опять зайду уже 5.65гб и вотак до 1гб помогите
- помогите массив c#.
- Помогите по C#
- Помогите с C++
а вообще я никогда не использую 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;
}