Récemment j'ai étudié la récursivité; comment l'écrire, l'analyser, etc. J'ai pensé pendant un moment que la récurrence et la récursion étaient la même chose, mais quelques problèmes sur les devoirs et les quiz récents m'ont fait penser qu'il y a de légères différences, que la «récurrence» est le moyen de décrire un programme ou une fonction récursive. Cela a été très grec jusqu'à récemment, quand je me suis rendu compte qu'il y avait quelque chose appelé le «maître théorème» utilisé pour écrire la «récurrence» pour les problèmes ou les programmes. J'ai lu la page wikipedia, mais, comme d'habitude, les choses sont écrites de telle façon que je ne comprends pas vraiment de quoi il s'agit. J'apprends beaucoup mieux avec des exemples.Comment utiliser le théorème Master pour décrire la récursivité?
Alors, quelques questions: Disons que vous donne cette récurrence:
r (n) = 2 * r (n-2) + r (n-1);
r (1) = r (2) = 1
Est-ce, en fait, sous la forme du théorème de maître? Si oui, en mots, que dit-il? Si vous deviez essayer d'écrire un petit programme ou un arbre de récursion basé sur cette récurrence, à quoi cela ressemblerait-il? Devrais-je simplement essayer de substituer des nombres, de voir un modèle, puis écrire un pseudocode qui pourrait créer récursivement ce modèle, ou, puisque cela peut être sous la forme du théorème principal, y a-t-il une approche mathématique plus directe? Maintenant, disons qu'on vous a demandé de trouver la récurrence, T (n), pour le nombre d'ajouts effectués par le programme créé à partir de la récurrence précédente. Je peux voir que le cas de base serait probablement T (1) = T (2) = 0, mais je ne sais pas où aller à partir de là. Fondamentalement, je demande comment passer d'une récurrence donnée au code, et le contraire. Comme cela ressemble au théorème du maître, je me demande s'il y a une façon simple et mathématique de s'y prendre. EDIT: Bon, j'ai regardé à travers certaines de mes missions passées pour trouver un autre exemple d'où l'on me demande, 'pour trouver la récurrence', qui est la partie de cette question que j'ai le problème de poste avec.
Récurrence qui décrit le mieux façon dont le nombre d'opérations d'addition dans le fragment de programme suivant (lorsqu'il est appelé avec l == 1 et r == n)
int example(A, int l, int r) {
if (l == r)
return 2;
return (A[l] + example(A, l+1, r);
}
D'accord, cela semble assez simple. Je ne suis pas vraiment sûr de ce que la «récurrence» est, mais mon professeur utilise souvent le mot, et plusieurs questions sur le test de pratique nous demandent de regarder un programme, puis le trouver. Je vais éditer ma question avec un autre exemple. –