Задача по Turbo Pascal

Модераторы: Duncon, Naeel Maqsudov, Хыиуду, Игорь Акопян

BBB
Сообщения: 1272
Зарегистрирован: 27 дек 2005, 13:37

16 янв 2008, 18:11

somewhere писал(а):Рекурсия - это совершенно другой подход к решению задачи, и пихать ее куда попало не всегда получается. Тоже самое что попытаться скрепить два стальных листа используя нитку с иголкой заместо сварки - в теории все возможно, но вот сколько с этим придется *заниматься сексом* - это уже другой вопрос.
Если это учебная задача, то тогда все объяснимо. Так сказать, "сегодня проходим рекурсию и закрепляем навыки, используя ее в следующих задачах" .
Zenit
Сообщения: 6
Зарегистрирован: 16 янв 2008, 09:26

16 янв 2008, 20:31

Так и есть но в том и загвоздка что я незнаю как её здесь использовать.
Кстати мож другую попробуете помоч а то их у меня 8 извините конечно за настырность но очень надо.

Используя операторы циклов, организовать необходимый поиск и вычисления. Тип результата определяется из контекста задачи.

Дано натуральное число n. Вычислить sin(x) + sin(sin(x)) + … + sin(sin(…sin(x)…)) – n раз синус
Буду рад любой помощи.
MOTOCoder
Сообщения: 542
Зарегистрирован: 14 янв 2008, 20:27
Откуда: Россия, Псков

16 янв 2008, 20:41

Вот привинтил кое как рекурсию:
[syntax='delphi']
program recurse;
const
N=10;
var
a:array[1..N]of real;
i:integer;
max:real;

procedure rec(value:real);
begin
inc(i);
if a>max then
max:=a;
if i<(n+1) then
rec(max);
end;

begin
for i:= 1 to 10 do

readln(a);
i:=0;
rec(a[1]);

writeln('Максимальное значение: ',max:0:5);
readln;
end.
[/syntax]

А про синусы как-то так:
[syntax='delphi']
var
sum:real;
sinus:real;
i:integer;
n:integer;

begin
writeln('Введите N:');
readln(n);

sinus:=n;
for i:=1 to n do
begin
sinus:=sin(sinus);
sum:=sum+sinus;
end;

writeln('Результат:',sum:0:5);
readln;
end.
[/syntax]

P.S. На "Код Delphi" не смотрите, код чисто паскалевский.
Ни что так не ограничивает фантазию программиста, как компилятор...
Serge_Bliznykov
Сообщения: 366
Зарегистрирован: 31 авг 2007, 03:06

16 янв 2008, 21:10

попробовал сшить стальные листы ниточкой ;-)))
вот решение с рекурсией...

Код: Выделить всё

program maxval;
  const N=10;
type
  TMyArray = array[1..N] of real;

function MaxRecursive( MyA : TMyArray; SizeA : integer): real;
var
  CurMax : real;
begin
  if SizeA = 1 then
      MaxRecursive := MyA[1]
  else begin
    CurMax := MaxRecursive( MyA, SizeA-1);
    if MyA[SizeA] > CurMax then
      MaxRecursive := MyA[SizeA]
    else
      MaxRecursive := CurMax;
  end;
end;

var
  a : TMyArray;
  i : integer;
begin
  writeln('Введите значения членов последовательности');
  for i:=1 to N do
    readln(a[i]);

  WriteLn('MaxElement = ',MaxRecursive(a,n):1:1);
end.
вроде
Zenit
Сообщения: 6
Зарегистрирован: 16 янв 2008, 09:26

16 янв 2008, 21:41

Огромнеёшее спасибо. Вы даже не представляете как вы меня выручили.
Закрыто