J'ai une question assez simple, je pense. J'ai ce problème, qui peut être résolu très facilement avec une fonction récursive, mais que je n'ai pas pu résoudre itérativement.version itérative de l'algorithme récursif facile
Supposons que vous ayez une matrice booléenne, comme:
M:
111011111110
110111111100
001111111101
100111111101
110011111001
111111110011
111111100111
111110001111
je sais que ce n'est pas une matrice booléenne ordinaire, mais il est utile pour mon exemple. Vous pouvez noter qu'il ya une sorte de zéros là-dedans ...
Je veux faire une fonction qui reçoit cette matrice et un point où un zéro est stocké et qui transforme chaque zéro dans la même zone en 2 (supposons que la matrice peut stocker tout entier même est d'abord booléenne)
(tout comme lorsque vous peignez une zone dans Paint ou tout autre éditeur d'image)
suppose que j'appelle la fonction avec cette matrice M et la coordonnée le coin supérieur droit zéro, le résultat serait:
111011111112
110111111122
001111111121
100111111121
110011111221
111111112211
111111122111
111112221111
bien, ma question est de savoir comment faire cette itérativement ... espoir que je ne l'ai pas gâcher trop
Merci à l'avance!
Manuel
ps: Je vous en serais reconnaissant si vous pouviez montrer la fonction en C, S, python, ou pseudo-code, s'il vous plaît: D
l'aide d'un objet pile/file d'attente est toujours récursive, vous gérez la pile vous-même plutôt que d'utiliser le langage de programmation pour faire le ménage pour vous. – Skizz
Faux. Récursive signifie une fonction appelant ou référençant elle-même. http://en.wikipedia.org/wiki/Recursion. Je suis d'accord avec vous que le code compilé finit fonctionnellement par la même chose, ce n'est pas strictement récursif. Une justification est que la version non récursive est analysable dans un analyseur à une seule passe. –
@Nick: dans la programmation fonctionnelle, un processus récursif utilise un espace non constant pour les opérations différées, tandis qu'un processus itératif utilise un espace constant. Ainsi, l'utilisation d'une pile ou d'une file d'attente est un processus récursif (http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-11.html#%_sec_1.2.1). – outis