
1,2,3,6 ,курсач (Жека) / Лаба 6 прога
.docxФедеральное государственное бюджетное образовательное учреждение высшего
профессионального образования
«Санкт-Петербургский государственный электротехнический
университет «ЛЭТИ» им. В.И.Ульянова (Ленина)»
Факультет компьютерных технологий и информатики
Кафедра вычислительной техники
Отчет
по лабораторной работе № 5
на тему «Рекурсия»
по дисциплине «Программирование»
Выполнил: студент группы 2306 Титков Е.В.
Проверила: к.т.н., доцент Сискович Т.И.
Санкт-Петербург
2013 г.
Цель работы
Получение практических навыков в работе с рекурсивными алгоритмами
Задание
Написать программу для вычисления суммы элементов массива с использование рекурсивных функций
Уточнение задания
Программа вычисляет сумму элементов одномерного массива. Массив заполняется случайными элементами с помощью функции random.
Контрольные примеры
Контрольные примеры приведены в таблице 1 «Контрольные примеры ».
Таблица 1. Контрольные примеры обработки
Массив A |
сумма |
|||||||
A[0] |
A[1] |
A[2] |
A[3] |
A[4] |
A[5] |
A[6] |
|
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
28 |
|
1 |
0 |
0 |
0 |
0 |
7 |
3 |
11 |
Описание переменных главной функции
Описание переменных главной функции приведено в таблице 3.
Таблица 3. Описание переменных главной функции
Имя переменной |
Тип переменной |
Назначение |
a[100] |
int |
массив чисел |
n,i |
int |
вспомогательные переменные |
Краткое описание алгоритма
1)Пользователь вводит количество элементов в массиве
2)Программа заполняет массив случайными элементами
3)Программа выводит сумму элементов массива
Код программы на языке C/С++
#include <locale>
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
int summa(int N, int a[100]);
int i,n, a[100];
void main()
{
setlocale(LC_CTYPE, "russian");
clrscr();
printf("\nКоличество элементов массива? ");
scanf("%d", &n);
printf("\nВ сформированном массиве %d чисел:\n", n);
randomize();
for (i=0; i<n; i++)
{
a[i]= -10+random(21);
printf("%d ", a[i]);
}
printf("Сумма: %d", summa(n-1, a));
}
int summa(int N, int a[100])
{
if (N==0) return a[0];
else return a[N]+summa(N-1, a);
}
Результаты выполнения программы
При выполнении программы полученные результаты совпадают с приведенными в таблице 1 "Контрольные примеры". Ошибок не обнаружено.
Выводы
При выполнении лабораторной работы получены практические навыки в работе с рекурсивными функциями на языке С/С++.