Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Упражнения

Для решения задач разработайте рекурсивные функции

1. Наберите коды программ из Примеров 3-4. Выполните компиляцию и запуск программ.

2. Определите закономерность формирования членов последовательности. Найдите n -ый член последовательности: 1, 1, 2, 3, 5, 8, 13,…

3. Составьте программу вычисления биномиального коэффициента для данных неотрицательных целых m, n (): .Решите задачу двумя способами: 1 – используйте функцию вычисления факториала; 2 – выразите вычисление через .

4. Исполнитель умеет выполнять два действия: «+1», «*2». Составьте программу получения из числа 1 числа 100 за наименьшее количество операций.

5. Найдите наибольший общий делитель двух натуральных чисел с помощью алгоритма Евклида.

6. Дано натуральное число, кратное 3. Получите сумму кубов этого числа, затем сумму кубов получившегося числа и т.д. Проверьте на нескольких примерах, действительно ли в конечном итоге получится 153.

7. Разработайте программу вычисления an натуральной степени n вещественного числа a за наименьшее число операций.

 

Литература

1. Керниган, Б. Язык программирования Си / Б. Керниган, Д. Ритчи. – М.: Вильямс, 2007. – 304 с.

2. Подбельский, В.В. Практикум по программированию на языке Си: учеб. пособие / В.В. Подбельский. – М.: Финансы и статистика, 2004. – 576 с.

3. Подбельский, В.В. Программирование на языке Си: учеб. пособие / В.В. Подбельский, С.С. Фомин. – М.: Финансы и статистика, 2004. – 600 с.

4. Подбельский, В.В. Язык Си++: учеб. пособие / В.В. Подбельский. – М.: Финансы и статистика, 2005. – 560 с.

5. Романов, Е.Л. Практикум по программированию на языке С++: учеб. пособие / Е.Л. Романов. – СПб: БХВ-Петербург, 2004. – 432 с.

6. С/С++. Структурное программирование: практикум / Т.А. Павловская, Ю.А. Щупак. – СПб: Питер, 2004. – 239 с.

 


Тесты «Типы данных, перегрузка функций, рекурсия»

Задача 1.

Вариант 1 Задачи 1. Укажите допустимые присваивания для переменной ch символьного типа.

+ch=55;

ch=5.5;

+ch=’&’;

ch=’&&&’;

Вариант 2 Задачи 1. Укажите допустимые присваивания для переменной m вещественного типа.

m=’f’;

+m=.5e-04;

+m=float(47)/4;

m=5,5;

 

Вариант 3 Задачи 1. Укажите допустимые присваивания для переменной b логического типа.

b=’true’;

+b=true;

+b=1;

+b=5>6;

Задача 2.

Вариант 1 Задачи 2. Укажите для целого знакового 4-байтного типа преобразования к целевому типу без потери информации:

+к плавающему типу

к целому беззнаковому 4-байтному типу

к символьному типу

к целому знаковому 8-байтному типу

Вариант 2 Задачи 2. Укажите для плавающего 4-байтного типа преобразования к целевому типу без потери информации:

+к плавающему 8-байтному типу

к целому беззнаковому 8-байтному типу

к целому знаковому 8-байтному типу

к целому беззнаковому 4-байтному типу

Вариант 3 Задачи 2. Укажите для целого беззнакового 4-байтного типа преобразования к целевому типу без потери информации:

+к плавающему типу

к целому знаковому 4-байтному типу

к логическому типу

+к целому беззнаковому 8-байтному типу

Задача 3.

Вариант 1 Задачи 3. Укажите ситуации, когда функция со спецификатором inline будет трактоваться как обычная не подставляемая функция.

всегда используется как подставляемая функция

никогда не используется как подставляемая

+функция является рекурсивной

+вызывается более одного раза в выражении

Вариант 2 Задачи 3. Укажите достоинства использования подставляемых функций в программе.

+уменьшается время, затрачиваемое на вызов функции

уменьшается объем памяти под программный код

функция становится доступной в любом программном коде

быстрее выполняются рекурсивные вызовы подставляемой функции

Вариант 3 Задачи 3. Укажите возможные недостатки использования подставляемых функций в программе.

увеличивается время, затрачиваемое на вызов функции

+увеличивается объем памяти под программный код

функция доступна для подстановки только один раз

+ компилятор не всегда может выполнить подстановку из-за контекста

 

Задача 4.

Вариант 1 Задачи 4. Укажите, какое значение возвращает функция f(a,b,c), если объявлены int a=3,b=5,c=18; и функция перегружена следующим образом:

float f(int a, int b, int c){

return float((a+b+c)/3);

}

float f(float a, float b, float c){

return a+b+c;

}

ошибка вызова функции

8.66667

+8

Вариант 2 Задачи 4. Укажите, какое значение возвращает функция g(a,b,c), если объявлены int a=3,b=5,c=18; и функция перегружена следующим образом:

float g(int a, int b, int c,int d){

return float(a+b+c)/4;

}

float g(float a, float b, float c){

return a+b+c;

}

ошибка вызова функции

+26

8.5

Вариант 3 Задачи 4. Укажите, какое значение возвращает функция h(a,b,c), если объявлены int a=3,b=6;float c=4.5; и функция перегружена следующим образом:

int h(int a, float b, int c){

return int(a+b+c)/3;

}

float h(float a, int b, float c){

return a+b+c;

}

+ошибка вызова функции

13.5

4.5

Задача 5.

Вариант 1 Задачи 5. Каково назначение типа void?

+ используется для определения функций, которые не возвращают значения

+указывает о пустом списке аргументов функции

указание об ошибке вызова функции

+используется в операции приведения типов

Вариант 2 Задачи 5. Какой тип имеет переменная перечисляемого типа, который объявлен так:

enum year {winter, spring, summer, autumn};?

строковый

+целочисленный

символьный

тип void

Вариант 3 Задачи 5. Укажите случаи допустимого неявного преобразования типов в выражениях, если выполнено объявление int s;:

+s=20/6;

s=4.5%8;

s=int(48.6/4);

+s=48.6/4;

Задача 6.

Вариант 1 Задачи 6. Что возвращает функция, фрагмент кода которой приведен ниже?

int Rec(int n) {

if (n<10) return n;

return Rec(n/10)+n%10;

}

количество цифр числа n

количество всех делителей числа n

+сумму цифр числа n

сумму всех делителей числа n

Вариант 2 Задачи 6. Что возвращает функция, фрагмент кода которой приведен ниже?

long int Rec(int n) {

if (n<2) return 1;

return Rec(n-1)*n;

}

произведение цифр числа n

количество цифр числа n

количество делителей числа n

+факториал числа n

Вариант 3 Задачи 6. Что возвращает функция, фрагмент кода которой приведен ниже?

int Rec(int n, int p) {

if (n%p!=0) return 0;

return Rec(n/p)+1;

}

количество цифр числа n, кратных p

+p-ичный порядок числа n

сумму цифр числа n, кратных p

сумму всех делителей числа n, не превосходящих p

Задача 7.

Вариант 1 Задачи 7. Формирование какой последовательности описывает рекурсивная функция Rec, код которой приведен ниже?

int Rec(int n) {

if (n<3) return n;

return Rec(n-1)*Rec(n-2);

}

1, 1, 2, 2, 3, 3, …

1, 2, 3, 4, 5, 6, …

+1, 2, 2, 4, 8, 32, …

1, 2, 2, 4, 4, 8, 8, …

Вариант 2 Задачи 7. Формирование какой последовательности описывает рекурсивная функция Rec, код которой приведен ниже?

int Rec(int n) {

if (n<5) return n;

return Rec(n-1)+Rec(n%4);

}

1, 2, 3, 4, 1, 2, 3, 4, …

1, 2, 3, 4, 6, 8, 10, 12, …

1, 2, 3, 4, 5, 6, 7, 8, …

+1, 2, 3, 4, 5, 7, 10, 10, …

Вариант 3 Задачи 7. Формирование какой последовательности описывает рекурсивная функция Rec, код которой приведен ниже?

int Rec(int n) {

if (n<4) return n;

return Rec(Rec(n-3));

}

+1, 2, 3, 1, 2, 3, 1, 2, 3, …

1, 2, 3, 4, 5, 6, 7, 8, 9,…

1, 2, 3, 3, 2, 1, 1, 2, 3, …

1, 2, 3, 3, 3, 3, 3, 3, 3, …

Задача 8.

Вариант 1 Задачи 8. Какое значение возвращает рекурсивная функция Rec(8), код которой приведен ниже?

int Rec(int n) {

if (n<1) return 0;

if (n%3==0) return n/3;

return Rec(n-1)+Rec(n-2);

}

+6

Вариант 2 Задачи 8. Какое значение возвращает рекурсивная функция Rec(2,12), код которой приведен ниже?

int Rec(int n,int k) {

if (k==0) return 1;

if (k%2==0) return sqr(Rec(n,k/2));

return n*Rec(n,k-1);

}

+4096

Вариант 3 Задачи 8. Какое значение возвращает рекурсивная функция Rec(108,72), код которой приведен ниже?

int Rec(int n,int k) {

if (n%k==0) return k;

return Rec(k,n%k);

}

+36

<== предыдущая лекция | следующая лекция ==>
Вопросы. База рекурсии – это тривиальный случай, при котором решение задачи очевидно, то есть не требуется обращение функции к себе | Рудской А.И., Лунев В.А
Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 2358; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.