Rekurencja- pomoc w zrozumieniu działania

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

 
#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

0

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

#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;
  }

1 użytkowników online, w tym zalogowanych: 0, gości: 1