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}\).
[C++] rekurencja, wypisywanie liczb
-
- 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
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.
Powód: Poprawa wiadomości.
-
- 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
\(\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?
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?
[C++] rekurencja, wypisywanie liczb
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?
-
- 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
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ś:
@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:
@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;}
Edit: ostatecznie zwraca i tak "koniec".
Zdublowane 10 może wynikać z tego, że wywołujesz:
cout<<wypisz(1,10);
zamiast wypisz(1,10);