Par ailleurs, j'ai du mal à comprendre le "cheminement" de
l'algorithme car au fil de la discussion, je comprends à peu près que
c'est récursif mais je vois en apparence une boucle.
Par ailleurs, j'ai du mal à comprendre le "cheminement" de
l'algorithme car au fil de la discussion, je comprends à peu près que
c'est récursif mais je vois en apparence une boucle.
Par ailleurs, j'ai du mal à comprendre le "cheminement" de
l'algorithme car au fil de la discussion, je comprends à peu près que
c'est récursif mais je vois en apparence une boucle.
Par ailleurs, j'ai du mal à comprendre le "cheminement" de
l'algorithme car au fil de la discussion, je comprends à peu près que
c'est récursif mais je vois en apparence une boucle.
Par ailleurs, j'ai du mal à comprendre le "cheminement" de
l'algorithme car au fil de la discussion, je comprends à peu près que
c'est récursif mais je vois en apparence une boucle.
Par ailleurs, j'ai du mal à comprendre le "cheminement" de
l'algorithme car au fil de la discussion, je comprends à peu près que
c'est récursif mais je vois en apparence une boucle.
Prends un papier et un crayon, surtout pas un ordi, et déroule toi même
le code. Tu devrais vite comprendre pourquoi le code récursif produit le
même résultat qu'une boucle.
Prends un papier et un crayon, surtout pas un ordi, et déroule toi même
le code. Tu devrais vite comprendre pourquoi le code récursif produit le
même résultat qu'une boucle.
Prends un papier et un crayon, surtout pas un ordi, et déroule toi même
le code. Tu devrais vite comprendre pourquoi le code récursif produit le
même résultat qu'une boucle.
Faut dire que l'exemple qu'il a récupéré n'est pas des plus simples. En
voici un plus adapté et plus démonstratif :
Faut dire que l'exemple qu'il a récupéré n'est pas des plus simples. En
voici un plus adapté et plus démonstratif :
Faut dire que l'exemple qu'il a récupéré n'est pas des plus simples. En
voici un plus adapté et plus démonstratif :
Samuel Devulder a écrit :
> Prends un papier et un crayon, surtout pas un ordi, et déroule toi m ême
> le code. Tu devrais vite comprendre pourquoi le code récursif produit le
> même résultat qu'une boucle.
Faut dire que l'exemple qu'il a récupéré n'est pas des plus simples . En
voici un plus adapté et plus démonstratif :
void boucle(int n)
{
int i;
for (i = 0; i < n; i++)
printf("%d ", i * i);
}
/* simule une boucle */
void f(int n)
{
if (n > 0)
{
f(n - 1);
printf("%d ", (n - 1) * (n - 1));
}
}
int main(void)
{
boucle(10);
printf("n");
f(10);
printf("n");
return 0;
}
et qui affiche :
0 1 4 9 16 25 36 49 64 81
0 1 4 9 16 25 36 49 64 81
/* simule une boucle */
void f(int n)
{
if (n > 0)
{
f(n - 1);
printf("%d ", (n - 1) * (n - 1));
}
}
Samuel Devulder a écrit :
> Prends un papier et un crayon, surtout pas un ordi, et déroule toi m ême
> le code. Tu devrais vite comprendre pourquoi le code récursif produit le
> même résultat qu'une boucle.
Faut dire que l'exemple qu'il a récupéré n'est pas des plus simples . En
voici un plus adapté et plus démonstratif :
void boucle(int n)
{
int i;
for (i = 0; i < n; i++)
printf("%d ", i * i);
}
/* simule une boucle */
void f(int n)
{
if (n > 0)
{
f(n - 1);
printf("%d ", (n - 1) * (n - 1));
}
}
int main(void)
{
boucle(10);
printf("n");
f(10);
printf("n");
return 0;
}
et qui affiche :
0 1 4 9 16 25 36 49 64 81
0 1 4 9 16 25 36 49 64 81
/* simule une boucle */
void f(int n)
{
if (n > 0)
{
f(n - 1);
printf("%d ", (n - 1) * (n - 1));
}
}
Samuel Devulder a écrit :
> Prends un papier et un crayon, surtout pas un ordi, et déroule toi m ême
> le code. Tu devrais vite comprendre pourquoi le code récursif produit le
> même résultat qu'une boucle.
Faut dire que l'exemple qu'il a récupéré n'est pas des plus simples . En
voici un plus adapté et plus démonstratif :
void boucle(int n)
{
int i;
for (i = 0; i < n; i++)
printf("%d ", i * i);
}
/* simule une boucle */
void f(int n)
{
if (n > 0)
{
f(n - 1);
printf("%d ", (n - 1) * (n - 1));
}
}
int main(void)
{
boucle(10);
printf("n");
f(10);
printf("n");
return 0;
}
et qui affiche :
0 1 4 9 16 25 36 49 64 81
0 1 4 9 16 25 36 49 64 81
/* simule une boucle */
void f(int n)
{
if (n > 0)
{
f(n - 1);
printf("%d ", (n - 1) * (n - 1));
}
}
void f(int n)
{
if (n > 0)
{
f(n - 1);
printf("%d ", (n - 1) * (n - 1));
}
}
Qu'est-ce qui se produit après "f(n-1)" ?La séquence "rembobine"???
càd après void f(10) ;
void f(9) au second appel )à cause de f
(n-1), ...void f(8) ... où printf est inclus avant que la séquence
rembobine dans ce cas, 81 64 42 ...devrait être affichés ?
void f(int n)
{
if (n > 0)
{
f(n - 1);
printf("%d ", (n - 1) * (n - 1));
}
}
Qu'est-ce qui se produit après "f(n-1)" ?La séquence "rembobine"???
càd après void f(10) ;
void f(9) au second appel )à cause de f
(n-1), ...void f(8) ... où printf est inclus avant que la séquence
rembobine dans ce cas, 81 64 42 ...devrait être affichés ?
void f(int n)
{
if (n > 0)
{
f(n - 1);
printf("%d ", (n - 1) * (n - 1));
}
}
Qu'est-ce qui se produit après "f(n-1)" ?La séquence "rembobine"???
càd après void f(10) ;
void f(9) au second appel )à cause de f
(n-1), ...void f(8) ... où printf est inclus avant que la séquence
rembobine dans ce cas, 81 64 42 ...devrait être affichés ?
Bjr/sr,
Je dois admettre que je suis loin du niveau du premier post et je ne
veux pas perdre de temps avec des acrobaties intellectuelles à ne plus
finir ! Si j'ai besoin, je reviendrais réfléchir...
Pour explication ce poste ci-dessus me paraît plus abordable enfin je
dois reconnaître que pour cette partie je suis dépassé :/* simule une boucle */
void f(int n)
{
if (n > 0)
{
f(n - 1);
printf("%d ", (n - 1) * (n - 1));
}
}
Qu'est-ce qui se produit après "f(n-1)" ?La séquence "rembobine"???
càd après void f(10) ; void f(9) au second appel )à cause de f
(n-1), ...void f(8) ... où printf est inclus avant que la séquence
rembobine dans ce cas, 81 64 42 ...devrait être affichés ? Mais ce
n'est pas le cas et je ne trouve pas d'explication.
Bjr/sr,
Je dois admettre que je suis loin du niveau du premier post et je ne
veux pas perdre de temps avec des acrobaties intellectuelles à ne plus
finir ! Si j'ai besoin, je reviendrais réfléchir...
Pour explication ce poste ci-dessus me paraît plus abordable enfin je
dois reconnaître que pour cette partie je suis dépassé :
/* simule une boucle */
void f(int n)
{
if (n > 0)
{
f(n - 1);
printf("%d ", (n - 1) * (n - 1));
}
}
Qu'est-ce qui se produit après "f(n-1)" ?La séquence "rembobine"???
càd après void f(10) ; void f(9) au second appel )à cause de f
(n-1), ...void f(8) ... où printf est inclus avant que la séquence
rembobine dans ce cas, 81 64 42 ...devrait être affichés ? Mais ce
n'est pas le cas et je ne trouve pas d'explication.
Bjr/sr,
Je dois admettre que je suis loin du niveau du premier post et je ne
veux pas perdre de temps avec des acrobaties intellectuelles à ne plus
finir ! Si j'ai besoin, je reviendrais réfléchir...
Pour explication ce poste ci-dessus me paraît plus abordable enfin je
dois reconnaître que pour cette partie je suis dépassé :/* simule une boucle */
void f(int n)
{
if (n > 0)
{
f(n - 1);
printf("%d ", (n - 1) * (n - 1));
}
}
Qu'est-ce qui se produit après "f(n-1)" ?La séquence "rembobine"???
càd après void f(10) ; void f(9) au second appel )à cause de f
(n-1), ...void f(8) ... où printf est inclus avant que la séquence
rembobine dans ce cas, 81 64 42 ...devrait être affichés ? Mais ce
n'est pas le cas et je ne trouve pas d'explication.
Il y a plein de programmeurs C (C ou autre) qui n'ont jamais rien
compris à la récursivité donc te crois pas obligé de passer par ce
pensum (qui est aussi une belle tarte à la crème).
Il y a plein de programmeurs C (C ou autre) qui n'ont jamais rien
compris à la récursivité donc te crois pas obligé de passer par ce
pensum (qui est aussi une belle tarte à la crème).
Il y a plein de programmeurs C (C ou autre) qui n'ont jamais rien
compris à la récursivité donc te crois pas obligé de passer par ce
pensum (qui est aussi une belle tarte à la crème).
candide a écrit :
Il y a plein de programmeurs C (C ou autre) qui n'ont jamais rien
compris à la récursivité donc te crois pas obligé de passer par ce
pensum (qui est aussi une belle tarte à la crème).
La "tarte à la crème" c'est de faire croire qu'on peut se dispenser de
comprendre la récursivité quand on est programmeur. Ceci est
totalement faux.
Tout algorithme qui requiert un automate à pile est souvent beaucoup
plus facile à coder de façon récursive (exemple : la reconnaissance
syntaxique des expressions arithmétiques).
Et puis nombre d'algorithmes sur les arbres, voire les listes, sont
bien plus faciles à programmer de façon récursive.
La récursivité est un concept clé de la programmation (et de
l'informatique et des mathématiques en général).
candide a écrit :
Il y a plein de programmeurs C (C ou autre) qui n'ont jamais rien
compris à la récursivité donc te crois pas obligé de passer par ce
pensum (qui est aussi une belle tarte à la crème).
La "tarte à la crème" c'est de faire croire qu'on peut se dispenser de
comprendre la récursivité quand on est programmeur. Ceci est
totalement faux.
Tout algorithme qui requiert un automate à pile est souvent beaucoup
plus facile à coder de façon récursive (exemple : la reconnaissance
syntaxique des expressions arithmétiques).
Et puis nombre d'algorithmes sur les arbres, voire les listes, sont
bien plus faciles à programmer de façon récursive.
La récursivité est un concept clé de la programmation (et de
l'informatique et des mathématiques en général).
candide a écrit :
Il y a plein de programmeurs C (C ou autre) qui n'ont jamais rien
compris à la récursivité donc te crois pas obligé de passer par ce
pensum (qui est aussi une belle tarte à la crème).
La "tarte à la crème" c'est de faire croire qu'on peut se dispenser de
comprendre la récursivité quand on est programmeur. Ceci est
totalement faux.
Tout algorithme qui requiert un automate à pile est souvent beaucoup
plus facile à coder de façon récursive (exemple : la reconnaissance
syntaxique des expressions arithmétiques).
Et puis nombre d'algorithmes sur les arbres, voire les listes, sont
bien plus faciles à programmer de façon récursive.
La récursivité est un concept clé de la programmation (et de
l'informatique et des mathématiques en général).