[C++] rekurencja, wypisywanie liczb

agggnes
Użytkownik
Użytkownik
Posty: 87
Rejestracja: 21 gru 2011, o 21:27
Płeć: Kobieta
Podziękował: 18 razy

[C++] rekurencja, wypisywanie liczb

Post autor: agggnes »

Proszę o pomoc w napisaniu programu, który jest co prawda prosty, lecz nie potrafię zastosować w nim rekurencji.
Program ma rekurencyjnie wypisywać liczby naturalne od \(\displaystyle{ 1}\) do \(\displaystyle{ 10}\).
Jacek_Karwatka
Użytkownik
Użytkownik
Posty: 351
Rejestracja: 2 maja 2012, o 16:16
Płeć: Mężczyzna
Lokalizacja: Polska
Podziękował: 1 raz
Pomógł: 94 razy

[C++] rekurencja, wypisywanie liczb

Post autor: Jacek_Karwatka »

Funkcja wyglądać moze tak

Kod: Zaznacz cały

int wypisz_liczby( int poczatek, int koniec)
{
     cout<<poczatek<<endl;
     if(poczatek>=koniec)
     {
          return poczatek;
     }
     else
     {
          return wypisz_liczby(poczatek+1, koniec);
     }
}
Ostatnio zmieniony 9 wrz 2012, o 18:14 przez Althorion, łącznie zmieniany 1 raz.
Powód: Poprawa wiadomości.
gryxon
Użytkownik
Użytkownik
Posty: 311
Rejestracja: 30 gru 2011, o 02:21
Płeć: Mężczyzna
Lokalizacja: Puławy
Podziękował: 11 razy
Pomógł: 53 razy

[C++] rekurencja, wypisywanie liczb

Post autor: gryxon »

\(\displaystyle{ a_{1}=1 \\
a_{n}=a_{n-1}+1 \\}\)

Fajniej bybyło gdyby właśnie ta rekurencja była "od końca" jak to zwykle bywa. ;p
Tylko tak niefajnie się złożyło że: \(\displaystyle{ a_{n}=n}\), więc taka rekurencja jest bez sensu.
Na prawdę już nie ma ciekawszych zadań do nauki rekurencji?
agggnes
Użytkownik
Użytkownik
Posty: 87
Rejestracja: 21 gru 2011, o 21:27
Płeć: Kobieta
Podziękował: 18 razy

[C++] rekurencja, wypisywanie liczb

Post autor: agggnes »

Niestety nie ja to zadanie wymyślałam, i dla mnie też robienie tego rekurencją jest co najmniej bezsensowne.-- 9 wrz 2012, o 12:36 --Jacek_Karwatka, kod jest w porządku, ale czemu na końcu wypisuje mi \(\displaystyle{ 10}\) dwukrotnie?
royas
Użytkownik
Użytkownik
Posty: 363
Rejestracja: 24 sie 2012, o 09:27
Płeć: Mężczyzna
Lokalizacja: Cieszyn
Pomógł: 80 razy

[C++] rekurencja, wypisywanie liczb

Post autor: royas »

W pewnym sensie tu w ogóle nie ma \(\displaystyle{ a_n}\), bo tu nie mamy niczego obliczyć, można więc użyć funkcji void, żeby nie zaciemniać intem, który i tak będzie równy "koniec".

@gryxon: czy przez "od końca" rozumiesz to, że kolejne wywołania będą miały parametr mniejszy od wcześniejszych? Takie coś:

Kod: Zaznacz cały

void w (int n) {
if (n<0) return;
w(n-1);
cout<<n;}
@aggnes: myślę, że to jest proste ćwiczenie, które ma uczyć "widzenia" rekurencji w problemach, to się naprawdę przydaje.
Edit: ostatecznie zwraca i tak "koniec".
Zdublowane 10 może wynikać z tego, że wywołujesz:
cout<<wypisz(1,10); zamiast wypisz(1,10);
ODPOWIEDZ