Bonjour a tous :
j'ai un petit soucis, à savoir je veux compter le nombre d'appels d'une fonction récursive dans une application déployée.
pour l'instant dans mon script je me débrouille avec profile, mais celui-ci n'est pas supporté par la compilation, ce qui est logique me direz-vous
Bon je peux pas montrer mon code, mais pour l'exemple prenons ceci qui se rapproche de ce que je fais : une fonction qui calcule le nombre de partitions d'un entier naturel en au plus q parties (pêchée sur l'ami wikipedia) : http://fr.wikipedia.org/wiki/Algorithme_r%C3%A9cursif.
en matlab, ca donne ça :
pour essayer de "compter" le nombre d'appels, j'ai essayé d'utiliser une variable globale et j'ai fait ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 function nb = d(p, q) if p == 0 nb = 1; elseif q == 0 nb = 0; elseif q > p nb = d(p, p); else nb = d(p-q, q) + d(p, q-1); end end
seulement, les variables globales c'est pas forcement ce que je préfère, en effet me connaissant je vais forcément me planter quelque part dans une initialisation ou un truc du genre.. et je me demandais si quelqu'un connaissait une alternative?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 function [nb, n_tot] = d(p, q) global n_iter if isempty(n_iter) n_iter = 0; end n_iter = n_iter+1; if p == 0 nb = 1; elseif q == 0 nb = 0; elseif q > p nb = d(p, p); else nb = d(p-q, q) + d(p, q-1); end n_tot = n_iter; end
Partager