Récursivité

Langage et programmation

Plan

Le principe

Exemples simples

Le rendu de monnaie

Nous avons vu comment rendre la monnaie par un algorithme glouton en première. Nous avons aussi vu que parfois, notre programme glouton ne donne pas la réponse. Nous allons voir que l'on peut réaliser un algorithme récursif. Encore une fois, pour réussir un programme récursif il est crucial de commencer par écrire un algorithme!

On veut récupérer la combinaison des pièces et le nombre de pièces


monnaie(pieces disponibles, montant,combinaison)
	si le montant est 0
		retourner 0 et et  liste vide (les pièces à utiliser!)
	sinon
		mini= infini
		combinaison = liste vide (pour l'instant on n'a pas de pièce)
	pour toutes les pieces disponibles:
		si on peut rendre cette piece (piece< montant):
			nombre de pieces et copmposition rendu = monnaie(pieces dispos, montant-piece, liste vide)
			incrémenter nombre de pieces
			si le nb de pieces< mini:
				le mini devient nb
				combinaison= composition rendu auquel on ajoute la pièce
	renvoyer mini, combinaison

Voici le code, ce n'est tout de même pas très simple!

def rendu_monnaie_rec_combinaison(pieces,montant,combinaison):
  if montant==0:
    return 0,[]
  else:
    mini = 1000
    comb= []
  for i in range(len(pieces)):
    if pieces[i]<=montant:
      nb,temp=rendu_monnaie_rec_combinaison(pieces,montant-pieces[i],[])
      nb = 1 + nb
      if nb<mini:
        mini = nb
        comb=copy.copy(temp)
        comb.append(pieces[i])
  return mini,comb

Exercices

  1. blabla
  2. blabla

Android

De la programmation pour pc à la programmation pour téléphone.

A finir

Pas eu le temps de tout faire.....