- •Оглавление
- •Введение
- •П.1. Простейшие программы.
- •П.2. Функция sizeof( ).
- •П. 3. Основные свойства фундаментальных типов.
- •П. 4. Коды ascii.
- •П. 4. Оператор while.
- •П. 5. Операторы break и continue в циклах.
- •§ 4 Функции п. 1. Работа с функциями.
- •П. 2. Функции, расположенные в другом файле.
- •П. 3. Рекурсивные функции.
- •§ 5 Указатели. Ссылки. Массивы. П. 1. Указатели.
- •П. 2. Ссылки.
- •П. 3. Указатели на функции.
- •П. 4. Массивы.
- •П. 5. Многомерные массивы
- •П. 6. Динамические массивы.
- •П. 7. Вывод русского текста на экран
- •§ 6 Работа с файлами
- •Приложение 1. Контрольные работы профессора Богачёва к.Ю.
- •Контрольная работа №1
- •Контрольная работа №2
- •Контрольная работа №3
- •Контрольная работа №4
- •Контрольная работа №5
- •Контрольная работа №6
- •Обозначения
- •Литература
П. 3. Рекурсивные функции.
Все задания этого пункта должны быть реализованы с помощью рекурсивных функций.
-
Написать программу, получающую число
и
вычисляющую факториал n!.
В программе должны быть использованы следующие функции:
Функция main: 1. вызывает функцию inout; 2. выводит запрос на продолжение работы и в соответствии с ответом пользователя производит дальнейшие действия.
Функция inout:
1.
запрашивает int
n,
,
получает его с клавиатуры; 2. передаёт
n как параметр
функции fact; 3. выводит
на экран значение fact(n).
Функция fact – рекурсивная
функция, получающая int
n
как параметр,
вычисляющая
и возвращающая его значение функции
inout.
Программа должна выводить сообщение в случае недостаточности выбранного типа для хранения числа n!. Использовать типы: int, unsigned int, long int, unsigned long int.
-
Написать программу, получающую числа
,
и вычисляющую биномиальный коэффициент
.
Функция main: 1. вызывает функцию inout; 2. выводит запрос на продолжение работы и в соответствии с ответом пользователя производит дальнейшие действия.
Функция inout:
1.
запрашивает
,
получает их с клавиатуры; 2. передаёт
n, m
как параметры функции bin;
3. выводит на экран значение bin(n,m).
Функция bin:
1. получает параметры n,
m;
2. вычисляет биномиальный
коэффициент
с помощью формулы:
,
вызывая функцию fact; 3. возвращает значение биномиального коэффициента.
Функция fact – рекурсивная
функция, получающая int
n
как параметр,
вычисляющая
и возвращающая его значение.
-
Написать программу, получающую числа
,
и вычисляющую биномиальный коэффициент
.
Функция main: 1. вызывает функцию inout; 2. выводит запрос на продолжение работы и в соответствии с ответом пользователя производит дальнейшие действия.
Функция inout:
1.
запрашивает
,
получает их с клавиатуры; 2. передаёт
n, m
как параметры функции bin;
3. выводит на экран значение bin(n,m).
Функция bin
– рекурсивная функция:
1. получает параметры n,
m;
2. вычисляет биномиальный
коэффициент
с помощью рекуррентных соотношений:
,
;
3. возвращает вычисленное значение.
-
Написать программу, получающую числа
,
и вычисляющую
.
Функция main: 1. вызывает функцию inout; 2. выводит запрос на продолжение работы и в соответствии с ответом пользователя производит дальнейшие действия.
Функция inout:
1.
запрашивает
,
получает их с клавиатуры; 2. передаёт
n, m
как параметры функции
;
3. выводит на экран значение
.
Функция gcd
– рекурсивная функция: 1. получающая
int
n,
m
как параметры;
2. вычисляющая
- наибольший общий делитель чисел n
и m, c
помощью рекуррентных соотношений:
,
,
для
;
3. возвращает вычисленное значение.
-
Написать программу, получающую числа
,
и вычисляющую число Стирлинга первого
рода
.
Функция main: 1. вызывает функцию inout; 2. выводит запрос на продолжение работы и в соответствии с ответом пользователя производит дальнейшие действия.
Функция inout:
1.
запрашивает
,
получает их с клавиатуры; 2. передаёт
n, m
как параметры функции
;
3. выводит на экран значение
.
Функция stir1
– рекурсивная функция: 1. получающая
int
n,
m
как параметры; 2.
вычисляющая число
с помощью рекуррентных соотношений:
,
;
3. возвращает вычисленное значение.
-
Написать программу, получающую числа
,
и вычисляющую число Стирлинга второго
рода
.
Функция main: 1. вызывает функцию inout; 2. выводит запрос на продолжение работы и в соответствии с ответом пользователя производит дальнейшие действия.
Функция inout:
1.
запрашивает
,
получает их с клавиатуры; 2. передаёт
n, m
как параметры функции
;
3. выводит на экран значение
.
Функция stir2
– рекурсивная функция: 1. получающая
int
n,
m
как параметры; 2.
вычисляющая
число
с помощью рекуррентных соотношений:
,
;
3. возвращает вычисленное значение.
-
Написать программу, получающую числа
,
и вычисляющую сумму биномиальных
коэффициентов:
.
Функция main: 1. вызывает функцию inout; 2. выводит запрос на продолжение работы и в соответствии с ответом пользователя производит дальнейшие действия.
Функция inout:
1.
запрашивает числа
,
получает их с клавиатуры; 2. передаёт
n, m
как параметры функции
;
3. выводит на экран значение
.
Функция
:
1. вызывает функцию
;
2. вычисляет сумму
;
3. возвращает вычисленную сумму.
Функция bin
– рекурсивная функция:
1. получает параметры n,
m;
2. вычисляет биномиальный
коэффициент
с помощью рекуррентных соотношений:
,
.
-
Написать программу, получающую числа
и вычисляющую сумму наибольший общих
делителей:
=
.
Функция main: 1. вызывает функцию inout; 2. выводит запрос на продолжение работы и в соответствии с ответом пользователя производит дальнейшие действия.
Функция inout:
1.
запрашивает
,
получает их с клавиатуры; 2. передаёт
n, m
как параметры функции
;
3. выводит на экран значение
.
Функция
:
1. вызывает функцию
;
2. вычисляет сумму
;
3. возвращает вычисленную сумму.
Функция gcd
– рекурсивная функция: 1. получающая
int
n,
m
как параметры;
2. вычисляющая
с помощью рекуррентных соотношений:
,
,
для
;
3. возвращает вычисленное значение.
-
Написать программу, получающую число
и выводящую на экран таблицу биномиальных
коэффициентов.
Функция main: 1. вызывает функцию inout; 2. выводит запрос на продолжение работы и в соответствии с ответом пользователя производит дальнейшие действия.
Функция inout:
1.
запрашивает
,
получает его с клавиатуры; 2. передаёт
n как параметр
функции
.
Функция
вызывает функцию
,
получает значения биномиальных
коэффициентов и выводит их на экран в
виде таблицы:
|
|
r=0 |
r=1 |
r=2 |
r=3 |
r=4 |
… |
|
n=0 |
|
|
|
|
|
|
|
n=1 |
|
|
|
|
|
|
|
n=2 |
|
|
|
|
|
|
|
n=3 |
|
|
|
|
|
|
|
… |
… |
… |
… |
… |
… |
… |
Рекурсивная функция bin определена в задаче №3.
-
Написать программу, получающую число int n,
и выводящую на экран таблицу чисел
Стирлинга первого рода
.
Функция main: 1. вызывает функцию inout; 2. выводит запрос на продолжение работы и в соответствии с ответом пользователя производит дальнейшие действия.
Функция inout:
1.
запрашивает
,
получает его с клавиатуры; 2. передаёт
n как параметр
функции
.
Функция
вызывает функцию
,
получает значения чисел Стирлинга
первого рода и выводит их на экран в
виде таблицы:
|
|
r=0 |
r=1 |
r=2 |
r=3 |
r=4 |
… |
|
n=0 |
|
|
|
|
|
|
|
n=1 |
|
|
|
|
|
|
|
n=2 |
|
|
|
|
|
|
|
n=3 |
|
|
|
|
|
|
|
… |
… |
… |
… |
… |
… |
… |
Рекурсивная функция
определена в задаче № 5.
-
Написать программу, получающую число int n,
и выводящую на экран таблицу чисел
Стирлинга второго рода
.
Функция main: 1. вызывает функцию inout; 2. выводит запрос на продолжение работы и в соответствии с ответом пользователя производит дальнейшие действия.
Функция inout:
1.
запрашивает
,
получает его с клавиатуры; 2. передаёт
n как параметр
функции
.
Функция
вызывает функцию
,
получает значения чисел Стирлинга
первого рода и выводит их на экран в
виде таблицы:
|
|
r=0 |
r=1 |
r=2 |
r=3 |
r=4 |
… |
|
n=0 |
|
|
|
|
|
|
|
n=1 |
|
|
|
|
|
|
|
n=2 |
|
|
|
|
|
|
|
n=3 |
|
|
|
|
|
|
|
… |
… |
… |
… |
… |
… |
… |
Рекурсивная функция
определена в задаче № 6.
