Написать рекурсивную программу для определения скалярного произведения двух векторов - Free Pascal
Формулировка задачи:
Напишите рекурсивную программу для определения скалярного произведения двух векторов.
помогите пожалуйста решить срочно надо а то я не могу никак разобраться как писать((((
Решение задачи: «Написать рекурсивную программу для определения скалярного произведения двух векторов»
textual
Листинг программы
Program rekyrsia;
type Mas=array[1..100] of integer;
//Рекурсивная функция
function Scal(k:byte;x,y:Mas):integer;
begin
if k=0 then Scal:=0 else Scal:=x[k]*y[k]+Scal(k-1,x,y)
end;
//Основная программа
var a,b:Mas;
i,n,m:Byte;
begin
randomize;
write('Количество элементов массивов n=');
readln(n);
writeln('Массив А');
for i:=1 to n do
begin
a[i]:=Random(20);
write(a[i],' ');
end;
writeln;
writeln('Массив B');
for i:=1 to n do
begin
b[i]:=Random(20);
write(b[i],' ');
end;
writeln;
write('Скалярное произведение=',Scal(n,a,b));
end.
Объяснение кода листинга программы
- Объявление типа данных
Masдля массива целых чисел размером 100. - Объявление рекурсивной функции
Scalдля вычисления скалярного произведения двух векторов. - Условие выхода из рекурсии: если значение
kравно 0, то возвращаем 0, иначе возвращаем произведение элементовx[k]иy[k]плюс результат вызова функцииScalс аргументамиk-1,x,y. - Объявление переменных
aиbтипаMas. - Объявление переменных
i,nиmтипаByte. - С помощью функции
randomizeинициализируем генератор случайных чисел. - Выводим сообщение
Количество элементов массивов n=и считываем значениеnс помощью функцииreadln. - Выводим сообщение
Массив Аи заполняем массивaслучайными целыми числами от 0 до 19 с помощью циклаforи функцииwrite. - Выводим сообщение
Массив Bи заполняем массивbслучайными целыми числами от 0 до 19 с помощью циклаforи функцииwrite. - Вычисляем скалярное произведение двух векторов
aиbс помощью функцииScalи выводим результат с помощью функцииwrite.