Контрольные примеры
Федеральное государственное учреждение высшего профессионального образования
Санкт-Петербургский государственный электротехнический университет «ЛЭТИ» им. В.И. Ульянова (Ленина) (СПбГЭТУ)
Факультет компьютерных технологий и информатики
Кафедра вычислительной техники
Отчет
по лабораторной работе №5
на тему «Рекурсия»
по дисциплине «Программирование»
Выполнил: студент группы №2306
Лебедев С. И.
Проверила: к. т. н., доцент
Сискович Т. И.
Санкт-Петербург
2013 г.
Цель работы
Получение практических навыков в работе с рекурсивными функциями.
Задание
Написать программу которая производит вычисление факториала рекурсивным методом.
Уточнение задания
Ввод числа задает сам пользователь.
Контрольные примеры
Контрольные примеры приведены в таблице №1 «Контрольные примеры».
|
Исходные данные | Результат |
3 | 6 |
5 | 120 |
Описание переменных главной функции
Описание переменных главной функции приведено в таблице 3.
Таблица 3. Описание переменных главной функции
Имя переменной | Тип переменной | Назначение |
v,m | int | Вспомогательные перменные |
c | char | Переменная для выбора пункта меню |
Описание функций
Описание функции func_vivod
Назначение
Используется для вывода символа в двоичной системе счисления.
Прототип
int func_fact(int);
, где параметр int- передаваемое число,int –тип возвращаемого значения.
Пример вызова
v=func_fact(v);
Описание переменных
Локальные переменные в данной функции отсутствуют.
Текст исходной программы на языке C / C ++.
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int func_fact(int);
void main (void)
{
int v,m;
char c;
do
{
system("cls");
puts("---------------MENU-------------\n");
puts("1-Vvod chisla\n");
puts("2-Proizvesti podschet factoriala\n");
puts("3-Zaverchenie programmi\n");
puts("--------------------------------\n");
puts("Viberite punkt\n");
scanf("%d",&m);
switch(m)
{
case 1:
puts("Vvedite chislo\n");
do
{
fflush(stdin);
scanf("\n%d",&v);
if(v<=0)
puts("Oshibka.Vi vveli itricatelnoe chislo.Povtorite popitky");
}
while(v<0);
break;
case 2:
v=func_fact(v);
printf("\n%d\n",v);
getch();
puts("\nHotite rabotat s novimi dannimi?(Y/N)\n");
fflush(stdin);
scanf("%c",&c);
if(c=='y'|'Y');
v=0;
break;
}
}
while(m!=3);
getch();
}
int func_fact(int k)
{
int n;
if(k==1)
return 1;
else
return k*func_fact(k-1);
}
Результаты выполнения программы
При выполнении программы полученные результаты совпадают с приведенными в таблице 1 "Контрольные примеры". Ошибок не обнаружено.
Выводы
При выполнении лабораторной работы получены практические навыки в использовании рекурсии на языке С/С++.