Const nx=30;var i,j,p,n:integer;A:array[1..nx,1..nx] of integer;d,Sn,min:real;begin p:=1;write('Введите размер матрицы');Read(n);for i:=1 to n do beginfor j:=1 to n do beginA[i,j]:=random(3)-2;write(A[i,j]:4);end;writeln;end;writeln;writeln;for i:=1 to n do beginfor j:=1 to n do beginif i = j then begin if A[i,j]<> 0 then p:=p* A[i,j];write(A[i,j]:4);endelse write(' ':4);end;writeln;end;write('p =',p);writeln;writeln;for i:=1 to n do beginfor j:=1 to n do beginif (i= n -j +1) then begin if A[i,j]<> 0 then p:=p* A[i,j];write(A[i,j]:4);endelse write(' ':4);end;writeln;end;write('p =',p);end.
#include <iostream> using namespace std; double val, p; //вводимые параметры значения функции и степень полинома //x - значение функции //res - значение, которое изменяется в процессе рекурсии по схеме Горнера //s - рассматриваемая текущая степень x double rec(double x, double res, double s) { if (s == 0.0) return res; return rec(x, x * res + s - 1, s - 1); } int main(){ cin >> val >> p; //старший коэффициент в схеме Горнера сначала сносится вниз, //поэтому его передаем в качестве начального параметра для результата cout << fixed << rec(val, p, p) << endl; return 0; }