In een bedrijf worden dozen op een stapel gezet vooraleer ze verwerkt worden. In elke iteratie van het proces gebeurt het volgende:

We vragen ons af hoeveel iteraties er gemiddeld nodig zullen zijn om \(N\) of meer dozen te verwerken op een initieel lege stapel.

Ontwerp en implementeer een algoritme met dynamisch programmeren voor dit probleem. Bereken hiermee de exacte verwachtingswaarde door gebruik te maken van de wet van de totale kans. Gebruik dus geen simulaties om dit getal te schatten.

Implementeer de interface BoxComputer1 in een klasse genaamd DynamicBoxComputer. Schrijf een methode double expectedMoves(int desiredBoxes) die teruggeeft wat het verwachte aantal iteraties is tot het gegeven aantal dozen is verwerkt. Tip: je klasse moet niet bij elke functieoproep ‘blanco’ starten: berekende informatie die later ook correct blijft mag je natuurlijk hergebruiken.

Gebruik eventueel de testklasse SimpleTest2 om je oplossing lokaal te testen.