Rekurencja- pomoc w zrozumieniu działania

Rekurencja- pomoc w zrozumieniu działania
Sawy3R11
  • Rejestracja:ponad 12 lat
  • Ostatnio:prawie 2 lata
  • Postów:66
0

Witam,

Mam problem ze zrozumieniem pewnej części rekurencji- samą zasade rozumiem ale posiada ona jeden mamnkamet jak dla mnie którego nie rozumie

Kopiuj
 
#include <iostream>
using namespace std;

long factorial (long a)
{
  if (a > 1)
   return (a * factorial (a-1));
  else
   return (1); // dokładnie o ta część mi chodzi 
}

int main ()
{
  long number;
  cout << "Please type a number: ";
  cin >> number;
  cout << number << "! = " << factorial (number);
  return 0;
}

Jeśli a <=1 to powinno zwrócić 1 a zwraca return (a * factorial (a-1));.

Tego właśnie nie rozumie że zamiast tej jedynki zwraca tamto .
Prosze mnie nie odsyłać do tutoriali bo tam na ten temat nic nie znalazłem :)

Pozdrawiam

edytowany 1x, ostatnio: Sawy3R11
madmike
!Zmień tytuł na sensowny, opisujący problem - nie bój się pisać pełnym zdaniem - nic nie mówiące tytuły kończą zazwyczaj w koszu...
_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:2 dni
0

Jednak trzeba cie odesłać do tutorialu bo wystarczy dodać kilka prostych wierszy i zrozumiesz że to co napisałeś to nie prawda:

Kopiuj
#include <iostream>
using namespace std;
 
unsigned long long factorial (unsigned a)
  {
   if(a>1)
     {
      cout<<"return "<<a<<"*factorial("<<(a-1)<<")"<<endl;
      return a*factorial(a-1);
     }
  //else - jest zbędny
   cout<<"return 1"<<endl;
   return 1;
  }
 
int main ()
  {
   unsigned number;
   cout<<"Please type a number: ";
   cin>>number;
   cout<<number<<"! = "<<factorial(number)<<endl;
   return 0;
  }

Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
edytowany 1x, ostatnio: _13th_Dragon

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.