Naar aanleiding van een topic van een tijdje terug ben ik begonnen mijzelf te verdiepen in de wondere wereld van het functioneel programmeren. Als oefening daarin had ik voor mijzelf een programmaatje geschreven voor het uitrekenen van de fibonacci-getallen. Omdat de definitie daarvan recursief is, heb ik ook een recursieve definitie aangehouden:
De code werkt, maar is gruwelijk traag voor grotere getallen, omdat er 100.000 keer hetzelfde uitgerekend moet worden. Nu is dit te optimaliseren, met behulp van bijvoorbeeld een lijst, maar in mijn ogen stap je dan af van het principe van FP, namelijk dat je beschrijft wat je wilt bereiken en niet direct hoe dat moet gebeuren. Wie heeft er ideeën over hoe dit te optimaliseren, zonder van zo'n mooie korte definitie af te stappen?
code:
1
2
3
| fib 0 = 1 fib 1 = 1 fib (n+2) = fib (n) + fib (n+1) |
De code werkt, maar is gruwelijk traag voor grotere getallen, omdat er 100.000 keer hetzelfde uitgerekend moet worden. Nu is dit te optimaliseren, met behulp van bijvoorbeeld een lijst, maar in mijn ogen stap je dan af van het principe van FP, namelijk dat je beschrijft wat je wilt bereiken en niet direct hoe dat moet gebeuren. Wie heeft er ideeën over hoe dit te optimaliseren, zonder van zo'n mooie korte definitie af te stappen?
- This line is intentionally left blank -