Ihr solltet in beiden Fällen etwas wie einen RuntimeError mit der Nachricht, die maximale Rekursionstiefe sei überschritten, sehen. Das bedeutet nichts anderes, als dass Python eine (veränderbare) Grenze setzt, wie oft Funktionen andere Funktionen aufrufen können. Dass es so eine Grenze geben muss, ist klar, denn Python muss sich für jede aufgerufene Funktion einige Dinge merken (etwa, wo die Ausführung weitergeht, wenn die Funktion endet, oder auch die Werte der in der Funktion verwendeten Variablen). Die Grenze, an die ihr hier stoßt, ist allerdings (wahrscheinlich, es sei denn, ihr hättet einen ausgesprochen lausigen Computer) künstlich und wurde eingeführt, um wahrscheinlich inkorrekte Programme abzufangen, bevor sie den Rechner ernsthaft belasten.