• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Rekurencja, jak wyświetlić każdy krok funkcji

Object Storage Arubacloud
0 głosów
142 wizyt
pytanie zadane 6 maja 2020 w C i C++ przez TaktyKK Nowicjusz (150 p.)
zamknięte 8 maja 2020 przez TaktyKK

Mam za zadanie zrobić funkcję rekurencyjną, która wyświetla każdy krok, który wykonuje, mam jednak z tym problem, a mianowicie funkcja tak jakby "ignoruje" to, co zaznaczyłem w kodzie. Czy ktoś wie może dlaczego tak się dzieje? Powinienem coś dodać jeszcze? Wszystko ma się znajdować w rekurencji, nie ma być używana żadna pętla. Proszę o pomoc, bo naprawdę już nie wiem co mam zrobić :/

 

#include <iostream>
using namespace std;

unsigned long int silnia(int n)
{	
	cout <<"silnia("<<n<<")"<<endl;
	if (n==0)
	{
	cout<<n<<" krok;   "<<"(-->1)"<<endl;		
	return 1;
	}
	else 
	{
		
	return  n* silnia(n - 1);
	}
	>to jest ignorowane cout<<n<<" krok;  "<<"silnia("<<n<<")="<<silnia(n)<<",  x="<<n<<",  silnia("<<n-1<<")="<<silnia(n-1)<<endl;
}

int main() {
	int n;
	for(;;)
	{	
	cout<<"podaj n"<<endl;
	cin>>n;
	cout<<"silnia("<<n<<")="<<silnia(n)<<endl;
	}
	return 0;
}

 

komentarz zamknięcia: Uzyskałem odpowiedź.

2 odpowiedzi

0 głosów
odpowiedź 6 maja 2020 przez TOM_CPP Pasjonat (22,640 p.)
wybrane 6 maja 2020 przez TaktyKK
 
Najlepsza

Zobacz.

#include <iostream>
using namespace std;

unsigned long int silnia(int n)
{
    cout << "silnia(" << n << ")" << endl;
    if( n==0 )
    {
        cout<<n<<" krok;   "<<"(-->1)"<<endl;
        return 1;
    }
    else
    {
        auto n1 = silnia(n - 1);
        cout << n << " krok  " << "silnia(" << n << ")=" << n*n1 << ",  x=" << n << ",  silnia(" << n-1 << ")=" << n1 << endl;
        return  n*n1;
    }
}

int main()
{
    int n {};
    cout << "podaj n" << endl;
    cin >> n;

    silnia(n);

    return 0;
}

 

komentarz 6 maja 2020 przez TaktyKK Nowicjusz (150 p.)
Aha, czyli brakowało po prostu innej zmiennej która będzie przechowywać "silnia(n-1)", bo właśnie przez to mi wariowała funkcja, dziękuję bardzo za pomoc, to w sumie proste rozwiązanie, ale nie wiem czy bym na nie wpadł, dlatego dziękuję jeszcze raz :)
0 głosów
odpowiedź 6 maja 2020 przez Piotr Batko Stary wyjadacz (13,190 p.)

return powoduje, że funkcja się kończy i nie jest wykonywana dalej. Jak n wynosi zero, to wychodzisz z funkcji returnem w linii 10., zaś w przeciwnym wypadku wychodzisz returnem w linii 15. No jakby nie było wychodzisz z funkcji zanim sterowanie dojdzie do linii 17., więc nie ma się co dziwić, że nie widzisz niczego w konsoli.

komentarz 6 maja 2020 przez TaktyKK Nowicjusz (150 p.)
No tak, ale jak w takim razie "wymusić" wykonanie linii 17? Bo próbowałem przestawić tę linię w inne miejsce ale wtedy funkcja w ogóle zaczyna świrować.

Podobne pytania

0 głosów
1 odpowiedź 178 wizyt
0 głosów
1 odpowiedź 206 wizyt
pytanie zadane 14 stycznia 2023 w C# przez Freak44 Początkujący (300 p.)
0 głosów
1 odpowiedź 200 wizyt
pytanie zadane 10 stycznia 2023 w C# przez Freak44 Początkujący (300 p.)

92,572 zapytań

141,423 odpowiedzi

319,645 komentarzy

61,959 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...