/*
Ez egy egyszerû kis példa a végrekurzió (jobbrekurzió, tail recursion) és a nem
végrekurzió különbségének illusztrálására 
*/

  szamlal(N) :-
  	writeln(N),
  	M is N + 1 ,
  	szamlal(M),
 	write('Ez a kiiratás megszünteti a jobb-rekurziót, mert nem a rekurzív hívás az utolsó.').

/*
Futtatás utolsó lépése: (futtatni szamlal(0). módon lehet :))

3355272
3355273
ERROR: Out of local stack
Ez még egy gyengébb gépen volt, jobb gépen nem volt türelmem kivárni :)
*/


  szamlal2(N) :-
  	writeln(N) ,
  	M is N + 1 ,
  	szamlal2(M).

/*
Futtatás "vége": (futtatás: szamlal2(0). :))

5652100
5652101

Action (h for help) ? abort
% Execution Aborted

Itt untam meg. (Közben persze mást is csináltam :)))

Ha lett volna elég türelmem, itt állt volna meg:

1e+306
1e+308
ERROR: Arithmetic: evaluation error: `float_overflow'
^  Exception: (162) _L143 is 1e+308*100 ? creep

Hogyan módosítottam a szamlal2-t, hogy elérjem ezt az eredményt?

*/


/*
Gondolja végig, hogy mi az oka az eltérõ futási eredményeknek!
*/