Το παρακάτω πρόβλημα μοιάζει να μπορεί να επιλυθεί με μια αναδρομική συνάρτηση:
Σε python το παραπάνω πρόβλημα γίνεται:
def f(x): if x>4: return(f(x-1)+x) else: return(x-f(x+1)) print(f(5)+f(6))
Ωστόσο όταν εκτελεστεί μας δίνει
RuntimeError: maximum recursion depth exceeded
Ο λόγος είναι ο εξής:
f(5)
return(f(4)+5)f(4)
return(4-f(5))f(5)
return(f(4)+5))f(4)
return(4-f(5))…
Οπότε κάποια στιγμή το πρόγραμμα φτάνει το μέγιστο βάθος αναδρομής και τερματίζει.
Το όμως μπορεί να υπολογιστεί αλγεβρικά με το παρακάτω σύστημα:
Με πρόσθεση κατά μέλη έχουμε:
Επίσης, .
Τέλος,
Το ίδιο αποτέλεσμα το έχουμε με το παρακάτω πρόγραμμα:
def f(x): if x == 5: return(4.5) elif x>4: return(f(x-1)+x) else: return(x-f(x+1)) print(f(5)+f(6))
Που εκτυπώνει:
15.0