Контрольные примеры

Федеральное государственное учреждение высшего профессионального образования

Санкт-Петербургский государственный электротехнический университет «ЛЭТИ» им. В.И. Ульянова (Ленина) (СПбГЭТУ)

Факультет компьютерных технологий и информатики

Кафедра вычислительной техники

 

Отчет

по лабораторной работе №5

на тему «Рекурсия»

по дисциплине «Программирование»

 

 

Выполнил: студент группы №2306

Лебедев С. И.

Проверила: к. т. н., доцент

Сискович Т. И.

 

 

Санкт-Петербург

2013 г.

 

Цель работы

Получение практических навыков в работе с рекурсивными функциями.

 

Задание

Написать программу которая производит вычисление факториала рекурсивным методом.

Уточнение задания

Ввод числа задает сам пользователь.

 

Контрольные примеры

Контрольные примеры приведены в таблице №1 «Контрольные примеры».

 
Таблица 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 "Контрольные примеры". Ошибок не обнаружено.

Выводы

При выполнении лабораторной работы получены практические навыки в использовании рекурсии на языке С/С++.