- •Оглавление
- •Введение
- •П.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.