poniek Napisano Marzec 13, 2010 Zgłoś Share Napisano Marzec 13, 2010 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 More sharing options...
KANAR123 Napisano Marzec 13, 2010 Zgłoś Share Napisano Marzec 13, 2010 Gotowych programów nie dostaniesz... Rekurencja to wywoływanie funkcji/procedury przez nią samą. Musisz napisać taką procedurę i dostosować do własnych potrzeb. Pozdrawiam KANAR123 Link do komentarza Udostępnij na innych stronach More sharing options...
poniek Napisano Marzec 13, 2010 Autor Zgłoś Share Napisano Marzec 13, 2010 Dpskonale wiem na co to jest rekurencja ale nie mam bladego pojęcia jak mam to zrobic Link do komentarza Udostępnij na innych stronach More sharing options...
Jason Napisano Marzec 14, 2010 Zgłoś Share Napisano Marzec 14, 2010 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 More sharing options...
poniek Napisano Marzec 14, 2010 Autor Zgłoś Share Napisano Marzec 14, 2010 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 More sharing options...
jozekkg Napisano Marzec 14, 2010 Zgłoś Share Napisano Marzec 14, 2010 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 More sharing options...
Polecane posty
Zarchiwizowany
Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.