В
Все
У
Українська література
Г
Геометрия
Д
Другие предметы
Э
Экономика
Г
География
О
ОБЖ
М
Математика
М
МХК
Х
Химия
Қ
Қазақ тiлi
Л
Литература
У
Українська мова
О
Обществознание
Ф
Физика
А
Английский язык
А
Алгебра
И
История
Б
Беларуская мова
Б
Биология
М
Музыка
П
Право
И
Информатика
П
Психология
В
Видео-ответы
Н
Немецкий язык
Ф
Французский язык
О
Окружающий мир
Р
Русский язык

с С++ (Деревья) Написать код на С++


с С++ (Деревья) Написать код на С++

Ответ:
1652001
1652001
13.08.2020 12:26

Объяснение:

#include<iostream>

using namespace std;

//добавлен фиктивный 0-й элемент, чтобы нумерация была как

//в задании (в с++ нумеровать массивы можно только с 0)

int arr[16] = {0, 10, 22, 16, 11, 45, 25, 25, 4, 10, 7, 8, 25, 10, 1, 9};

// чтобы найти сумму в поддереве вершины i, нужно вызвать

// recurrent_sum(i);

int recurrent_sum(int current){

   //условие выхода из рекурсии

   if(current > 15){

       return 0;

   }

   return arr[current] + recurrent_sum(2 * current) + recurrent_sum(2 * current + 1);

}

int even_counter(int current){

   if(current > 15){

       return 0;

   }

   return (arr[current] % 2 == 0 ? 1 : 0) + even_counter(2 * current) + even_counter(2 * current + 1);

}

int main(){

   //проверяем, что всё работает.

   cout << recurrent_sum(1) << endl; //228

   cout << even_counter(1) << endl; //7

   return 0;

}

0,0(0 оценок)
Популярные вопросы: Другие предметы
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?