![](/user_photo/2706_HbeT2.jpg)
- •Оглавление
- •Введение
- •П.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.