recurive function cannot understand one line plz have a look

Code:

`//recursive factorial function`

#include <iostream>

#include <iomanip>

using namespace std;

unsigned long factorial( unsigned long );

int main()

{

for (int i = 1; i <= 10; i++ )

cout << setw( 2 ) << i << "! = " << factorial( i ) << endl; // this part <<factorial(i) calls function factorial with the parameter of i?

return 0;

}

// recursive definition of function factorial

unsigned long factorial( unsigned long number )

{

if ( number <= 1 ) // base case

return 1;

else // recursive case

return number * factorial( number -1 ); //this part here i have problem also number* factorial(number-1 ,so what happens here factorial has no value? so why multiply by number? i'm lost please help.

}