Skocz do zawartości

rekurencja w pascalu


poniek

Polecane posty

mam poważny problem z nastepujacymi zadaniami :

nie mam pojecia jak się do nich zabrać

sposobem iteracyjnym jest bardzo prosto ale nie mam pojecja jak zrobić te zadania rekurencyjnie

proszę o pomoc : oto te zadania

 

 

Zadanie 1

W trójkąt równoboczny o boku długości 1 wpisujemy kolejny trójkąt równoboczny, a w niego następny. Wyznacz wzór rekurencyjny na długość boku n-tego wpisanego trójkąta oraz napisz program, który wykorzysta zdefiniowaną przez ciebie funkcję i dla podanego przez użytkownika n wyświetli długość n-tego boku trójkąta.

Zadanie 2

Napisz program, który algorytmem rekurencyjnym wyznaczy wartość sumy:

1/2 + 2/3 + 3/4 + ... + n/(n+1) dla podanej liczby n.

Zadanie 3

Napisz program, który algorytmem rekurencyjnym wyznaczy ilość cyfr w podanej liczbie naturalnej n.

Link do komentarza
Udostępnij na innych stronach

Na przykładzie drugiego zadania...

 

Na początku sprawdzasz warunek końcowy, czyli jeśli n:D ?

#include <stdio.h>

float rek(float n)
{
       if (n<1.0)
               return 0;
       else
               return (n/(n+1.0))+rek(n-1.0);
}
int main()
{
       printf("%f",rek(3));
       return 0;
}

Link do komentarza
Udostępnij na innych stronach

drugie zadanie udało mi się rozwiązać akurat może na przykładzie zadania pierwszego bo tego w ogóle nie rozumie

 

uses crt;
var
n:integer;

function suma(n:integer):real;
begin
  if n=1
     then suma:=1/2
     else suma:=suma(n-1) + n/(n+1);
end;

procedure liczby;
begin
  writeln('*** Podaj Liczb: ');
  readln(n);
end;

begin
  clrscr;
  liczby;
  writeln('** Wynik: ',suma(n):0:2);
  readkey;
end.

Link do komentarza
Udostępnij na innych stronach

Co do zadania pierwszego, zauważ, że bok każdego następnego trójkąta jest o połowę mniejszy od poprzedniego.

Funkcję napisz wzorując się na podanym tutaj przez kolegów rozwiązaniu zadania drugiego.

 

Jeśli chodzi o zadanie trzecie, spróbuj dzielić liczbę przez dziesięć, do momentu, aż wartość całkowita będzie równa zero.

 

Edit Integer --------------

Przykład rekurencji http://forum.unit1.pl/index.php?showtopic=3736&hl=repeat

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...