Bonjour,
Function test(text As String)
If text = "Bonjour" Then
test ("Rebonjour")
Else
test = text
End If
End Function
Private Sub Form_Load()
Debug.Print test("Bonjour")
End Sub
Dans mon debug.print j'ai rien mais j'aimerais que ca donne Rebonjour
Ma question est possible faire qu'une fonction se call elle meme
Bonjour,
Function test(text As String)
If text = "Bonjour" Then
test ("Rebonjour")
Else
test = text
End If
End Function
Private Sub Form_Load()
Debug.Print test("Bonjour")
End Sub
Dans mon debug.print j'ai rien mais j'aimerais que ca donne Rebonjour
Ma question est possible faire qu'une fonction se call elle meme
Bonjour,
Function test(text As String)
If text = "Bonjour" Then
test ("Rebonjour")
Else
test = text
End If
End Function
Private Sub Form_Load()
Debug.Print test("Bonjour")
End Sub
Dans mon debug.print j'ai rien mais j'aimerais que ca donne Rebonjour
Ma question est possible faire qu'une fonction se call elle meme
Bonjour,
Function test(text As String)
If text = "Bonjour" Then
test ("Rebonjour")
Else
test = text
End If
End Function
Private Sub Form_Load()
Debug.Print test("Bonjour")
End Sub
Dans mon debug.print j'ai rien mais j'aimerais que ca donne Rebonjour
Ma question est possible faire qu'une fonction se call elle meme
Bonjour,
Function test(text As String)
If text = "Bonjour" Then
test ("Rebonjour")
Else
test = text
End If
End Function
Private Sub Form_Load()
Debug.Print test("Bonjour")
End Sub
Dans mon debug.print j'ai rien mais j'aimerais que ca donne Rebonjour
Ma question est possible faire qu'une fonction se call elle meme
Bonjour,
Function test(text As String)
If text = "Bonjour" Then
test ("Rebonjour")
Else
test = text
End If
End Function
Private Sub Form_Load()
Debug.Print test("Bonjour")
End Sub
Dans mon debug.print j'ai rien mais j'aimerais que ca donne Rebonjour
Ma question est possible faire qu'une fonction se call elle meme
Bonsoir John Smith,
John Smith a écrit :Bonjour,
Function test(text As String)
If text = "Bonjour" Then
test ("Rebonjour")
Else
test = text
End If
End Function
Private Sub Form_Load()
Debug.Print test("Bonjour")
End Sub
Dans mon debug.print j'ai rien mais j'aimerais que ca donne Rebonjour
Ma question est possible faire qu'une fonction se call elle meme
C'est possible :
Function test(text As String)
If text = "Bonjour" Then
test = test("Rebonjour")
Else
test = text
End If
End Function
De manière générale, un classique de la récursivité (je crois l'avoir fait
en Pascal sur Apple II+), les tours de Hanoi :
http://vbfrance.com/code.aspx?ID86
--
Cordialement,
Jacques.
Bonsoir John Smith,
John Smith a écrit :
Bonjour,
Function test(text As String)
If text = "Bonjour" Then
test ("Rebonjour")
Else
test = text
End If
End Function
Private Sub Form_Load()
Debug.Print test("Bonjour")
End Sub
Dans mon debug.print j'ai rien mais j'aimerais que ca donne Rebonjour
Ma question est possible faire qu'une fonction se call elle meme
C'est possible :
Function test(text As String)
If text = "Bonjour" Then
test = test("Rebonjour")
Else
test = text
End If
End Function
De manière générale, un classique de la récursivité (je crois l'avoir fait
en Pascal sur Apple II+), les tours de Hanoi :
http://vbfrance.com/code.aspx?ID86
--
Cordialement,
Jacques.
Bonsoir John Smith,
John Smith a écrit :Bonjour,
Function test(text As String)
If text = "Bonjour" Then
test ("Rebonjour")
Else
test = text
End If
End Function
Private Sub Form_Load()
Debug.Print test("Bonjour")
End Sub
Dans mon debug.print j'ai rien mais j'aimerais que ca donne Rebonjour
Ma question est possible faire qu'une fonction se call elle meme
C'est possible :
Function test(text As String)
If text = "Bonjour" Then
test = test("Rebonjour")
Else
test = text
End If
End Function
De manière générale, un classique de la récursivité (je crois l'avoir fait
en Pascal sur Apple II+), les tours de Hanoi :
http://vbfrance.com/code.aspx?ID86
--
Cordialement,
Jacques.
Merci pour la réponse rapide
Merci pour la réponse rapide
Merci pour la réponse rapide
Bonsoir John Smith,
John Smith a écrit :Merci pour la réponse rapide
De rien, je n'ai coiffé Jean-Marc que de 2 ou 3 minutes. Mais, fait comme
il l'indique, précise ce que renvoie ta fonction, c'est à dire :
Function test([ByVal ou ByRef ] x As ...) As ...
quand les appels récursifs sont nombreux, cela peut avoir des conséquences
notables sur les performances. J'ai été rapide, mais incomplet...
--
Cordialement,
Jacques.
Bonsoir John Smith,
John Smith a écrit :
Merci pour la réponse rapide
De rien, je n'ai coiffé Jean-Marc que de 2 ou 3 minutes. Mais, fait comme
il l'indique, précise ce que renvoie ta fonction, c'est à dire :
Function test([ByVal ou ByRef ] x As ...) As ...
quand les appels récursifs sont nombreux, cela peut avoir des conséquences
notables sur les performances. J'ai été rapide, mais incomplet...
--
Cordialement,
Jacques.
Bonsoir John Smith,
John Smith a écrit :Merci pour la réponse rapide
De rien, je n'ai coiffé Jean-Marc que de 2 ou 3 minutes. Mais, fait comme
il l'indique, précise ce que renvoie ta fonction, c'est à dire :
Function test([ByVal ou ByRef ] x As ...) As ...
quand les appels récursifs sont nombreux, cela peut avoir des conséquences
notables sur les performances. J'ai été rapide, mais incomplet...
--
Cordialement,
Jacques.
>"John Smith" a écrit dans le message de
Est-ce qu'il y a moyen d'utiliser une autre voie pour éviter les problèmes
de performances
>"John Smith" <spam@microsoft.com> a écrit dans le message de
Est-ce qu'il y a moyen d'utiliser une autre voie pour éviter les problèmes
de performances
>"John Smith" a écrit dans le message de
Est-ce qu'il y a moyen d'utiliser une autre voie pour éviter les problèmes
de performances
>"John Smith" a écrit dans le message de
news:%bQ9f.4665$Est-ce qu'il y a moyen d'utiliser une autre voie pour éviter les
problèmes
de performances
La récursivité peut, par sa nature même, conduire à des problèmes,
de 2 types:
- Performance
Les appels récursifs impliquent un grand nombre d'empilements
et de dépilements des fonctions et des paramètres. Tout ceci a
un coût, qui peut vite devenir un souci.
- Sécurité (fiabilité)
Le problème le plus fréquent ave les appels récursifs: le débordement
de pile; Si le nombre d'appels récursifs devient trop grand (et ça peut
arriver très vite), le programme consomme toute la mémoure jusqu'à un
débordement de pile conduisant à un plantage du programme.
Alors, y a t'il d'autres voies?
Oui il y en a, parfois. La récursivité terminale est moins couteuse
que la récursivité non terminale:
http://cermics.enpc.fr/polys/info1/main/node22.html
En fait, un bon compilateur saura remplacer des appels récursifs
terminaux par du code itératif.
La récursivité doit s'employer à boin escient, c'est parfois un
bon moyen (exemple: le problème des tours de Hanoi, comme indiqué
par Jacques). Dans d'autre cas, il est inutile et peu efficace
(voire très mauvais) de recourir à la récursivité (exemple: le
calcul de la fonction factorielle).
Le cas que tu donnais en exemple ("Bonjour" => "Rebonjour") ne
se programmerait certainement pas avec un appel récursif dans un
vrai programme.
--
Jean-marc
Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ;
>"John Smith" <spam@microsoft.com> a écrit dans le message de
news:%bQ9f.4665$LF3.432059@news20.bellglobal.com...
Est-ce qu'il y a moyen d'utiliser une autre voie pour éviter les
problèmes
de performances
La récursivité peut, par sa nature même, conduire à des problèmes,
de 2 types:
- Performance
Les appels récursifs impliquent un grand nombre d'empilements
et de dépilements des fonctions et des paramètres. Tout ceci a
un coût, qui peut vite devenir un souci.
- Sécurité (fiabilité)
Le problème le plus fréquent ave les appels récursifs: le débordement
de pile; Si le nombre d'appels récursifs devient trop grand (et ça peut
arriver très vite), le programme consomme toute la mémoure jusqu'à un
débordement de pile conduisant à un plantage du programme.
Alors, y a t'il d'autres voies?
Oui il y en a, parfois. La récursivité terminale est moins couteuse
que la récursivité non terminale:
http://cermics.enpc.fr/polys/info1/main/node22.html
En fait, un bon compilateur saura remplacer des appels récursifs
terminaux par du code itératif.
La récursivité doit s'employer à boin escient, c'est parfois un
bon moyen (exemple: le problème des tours de Hanoi, comme indiqué
par Jacques). Dans d'autre cas, il est inutile et peu efficace
(voire très mauvais) de recourir à la récursivité (exemple: le
calcul de la fonction factorielle).
Le cas que tu donnais en exemple ("Bonjour" => "Rebonjour") ne
se programmerait certainement pas avec un appel récursif dans un
vrai programme.
--
Jean-marc
Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ; _no_spam_jean_marc_n2@yahoo.fr
>"John Smith" a écrit dans le message de
news:%bQ9f.4665$Est-ce qu'il y a moyen d'utiliser une autre voie pour éviter les
problèmes
de performances
La récursivité peut, par sa nature même, conduire à des problèmes,
de 2 types:
- Performance
Les appels récursifs impliquent un grand nombre d'empilements
et de dépilements des fonctions et des paramètres. Tout ceci a
un coût, qui peut vite devenir un souci.
- Sécurité (fiabilité)
Le problème le plus fréquent ave les appels récursifs: le débordement
de pile; Si le nombre d'appels récursifs devient trop grand (et ça peut
arriver très vite), le programme consomme toute la mémoure jusqu'à un
débordement de pile conduisant à un plantage du programme.
Alors, y a t'il d'autres voies?
Oui il y en a, parfois. La récursivité terminale est moins couteuse
que la récursivité non terminale:
http://cermics.enpc.fr/polys/info1/main/node22.html
En fait, un bon compilateur saura remplacer des appels récursifs
terminaux par du code itératif.
La récursivité doit s'employer à boin escient, c'est parfois un
bon moyen (exemple: le problème des tours de Hanoi, comme indiqué
par Jacques). Dans d'autre cas, il est inutile et peu efficace
(voire très mauvais) de recourir à la récursivité (exemple: le
calcul de la fonction factorielle).
Le cas que tu donnais en exemple ("Bonjour" => "Rebonjour") ne
se programmerait certainement pas avec un appel récursif dans un
vrai programme.
--
Jean-marc
Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ;
Finalement j'ai pas besoin d'une function mais d'une sub
Voici ce que je veux avoir comme info
Pour un labo d'anlayse chimique (exemple pas vrai)
Parametre->addparametre
Durete-> Calcium + Magnésium
Parametre->addparametre
Calcium -> Nitrite
Donc je veux savoir si je fais la dureté c'est quoi que ca implique
Petit code rapido mais qui va se conntecté sur un base de donné avec une
table parametre et une table addparametre
Public idparametre As New Collection
Public idsousparametre As New Collection
Private Sub Form_Load()
'loop par exemple les parametre qu'un utilisateur a choisit
parametre "Dureté"
Dim i As Integer
For i = 1 To idparametre.Count
Debug.Print idparametre(i)
Next
End Sub
Sub parametre(id As String)
idparametre.Add id
Call addpara(id)
End Sub
Sub addpara(id As String)
'loop dans une table addparametre
If id = "Dureté" Then
parametre ("Calcium")
parametre ("Magnésium")
End If
If id = "Calcium" Then
parametre "Nitrite"
End If
End Sub
Si vous pensez avoir une meilleur facon faite moi signe
"Jean-Marc" wrote in message
news:4367d4d7$0$4167$>"John Smith" a écrit dans le message de
news:%bQ9f.4665$Est-ce qu'il y a moyen d'utiliser une autre voie pour éviter les
problèmes
de performances
La récursivité peut, par sa nature même, conduire à des problèmes,
de 2 types:
- Performance
Les appels récursifs impliquent un grand nombre d'empilements
et de dépilements des fonctions et des paramètres. Tout ceci a
un coût, qui peut vite devenir un souci.
- Sécurité (fiabilité)
Le problème le plus fréquent ave les appels récursifs: le débordement
de pile; Si le nombre d'appels récursifs devient trop grand (et ça peut
arriver très vite), le programme consomme toute la mémoure jusqu'à un
débordement de pile conduisant à un plantage du programme.
Alors, y a t'il d'autres voies?
Oui il y en a, parfois. La récursivité terminale est moins couteuse
que la récursivité non terminale:
http://cermics.enpc.fr/polys/info1/main/node22.html
En fait, un bon compilateur saura remplacer des appels récursifs
terminaux par du code itératif.
La récursivité doit s'employer à boin escient, c'est parfois un
bon moyen (exemple: le problème des tours de Hanoi, comme indiqué
par Jacques). Dans d'autre cas, il est inutile et peu efficace
(voire très mauvais) de recourir à la récursivité (exemple: le
calcul de la fonction factorielle).
Le cas que tu donnais en exemple ("Bonjour" => "Rebonjour") ne
se programmerait certainement pas avec un appel récursif dans un
vrai programme.
--
Jean-marc
Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ;
Finalement j'ai pas besoin d'une function mais d'une sub
Voici ce que je veux avoir comme info
Pour un labo d'anlayse chimique (exemple pas vrai)
Parametre->addparametre
Durete-> Calcium + Magnésium
Parametre->addparametre
Calcium -> Nitrite
Donc je veux savoir si je fais la dureté c'est quoi que ca implique
Petit code rapido mais qui va se conntecté sur un base de donné avec une
table parametre et une table addparametre
Public idparametre As New Collection
Public idsousparametre As New Collection
Private Sub Form_Load()
'loop par exemple les parametre qu'un utilisateur a choisit
parametre "Dureté"
Dim i As Integer
For i = 1 To idparametre.Count
Debug.Print idparametre(i)
Next
End Sub
Sub parametre(id As String)
idparametre.Add id
Call addpara(id)
End Sub
Sub addpara(id As String)
'loop dans une table addparametre
If id = "Dureté" Then
parametre ("Calcium")
parametre ("Magnésium")
End If
If id = "Calcium" Then
parametre "Nitrite"
End If
End Sub
Si vous pensez avoir une meilleur facon faite moi signe
"Jean-Marc" <NO_SPAM_jean_marc_n2@yahoo.fr> wrote in message
news:4367d4d7$0$4167$ba620e4c@news.skynet.be...
>"John Smith" <spam@microsoft.com> a écrit dans le message de
news:%bQ9f.4665$LF3.432059@news20.bellglobal.com...
Est-ce qu'il y a moyen d'utiliser une autre voie pour éviter les
problèmes
de performances
La récursivité peut, par sa nature même, conduire à des problèmes,
de 2 types:
- Performance
Les appels récursifs impliquent un grand nombre d'empilements
et de dépilements des fonctions et des paramètres. Tout ceci a
un coût, qui peut vite devenir un souci.
- Sécurité (fiabilité)
Le problème le plus fréquent ave les appels récursifs: le débordement
de pile; Si le nombre d'appels récursifs devient trop grand (et ça peut
arriver très vite), le programme consomme toute la mémoure jusqu'à un
débordement de pile conduisant à un plantage du programme.
Alors, y a t'il d'autres voies?
Oui il y en a, parfois. La récursivité terminale est moins couteuse
que la récursivité non terminale:
http://cermics.enpc.fr/polys/info1/main/node22.html
En fait, un bon compilateur saura remplacer des appels récursifs
terminaux par du code itératif.
La récursivité doit s'employer à boin escient, c'est parfois un
bon moyen (exemple: le problème des tours de Hanoi, comme indiqué
par Jacques). Dans d'autre cas, il est inutile et peu efficace
(voire très mauvais) de recourir à la récursivité (exemple: le
calcul de la fonction factorielle).
Le cas que tu donnais en exemple ("Bonjour" => "Rebonjour") ne
se programmerait certainement pas avec un appel récursif dans un
vrai programme.
--
Jean-marc
Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ; _no_spam_jean_marc_n2@yahoo.fr
Finalement j'ai pas besoin d'une function mais d'une sub
Voici ce que je veux avoir comme info
Pour un labo d'anlayse chimique (exemple pas vrai)
Parametre->addparametre
Durete-> Calcium + Magnésium
Parametre->addparametre
Calcium -> Nitrite
Donc je veux savoir si je fais la dureté c'est quoi que ca implique
Petit code rapido mais qui va se conntecté sur un base de donné avec une
table parametre et une table addparametre
Public idparametre As New Collection
Public idsousparametre As New Collection
Private Sub Form_Load()
'loop par exemple les parametre qu'un utilisateur a choisit
parametre "Dureté"
Dim i As Integer
For i = 1 To idparametre.Count
Debug.Print idparametre(i)
Next
End Sub
Sub parametre(id As String)
idparametre.Add id
Call addpara(id)
End Sub
Sub addpara(id As String)
'loop dans une table addparametre
If id = "Dureté" Then
parametre ("Calcium")
parametre ("Magnésium")
End If
If id = "Calcium" Then
parametre "Nitrite"
End If
End Sub
Si vous pensez avoir une meilleur facon faite moi signe
"Jean-Marc" wrote in message
news:4367d4d7$0$4167$>"John Smith" a écrit dans le message de
news:%bQ9f.4665$Est-ce qu'il y a moyen d'utiliser une autre voie pour éviter les
problèmes
de performances
La récursivité peut, par sa nature même, conduire à des problèmes,
de 2 types:
- Performance
Les appels récursifs impliquent un grand nombre d'empilements
et de dépilements des fonctions et des paramètres. Tout ceci a
un coût, qui peut vite devenir un souci.
- Sécurité (fiabilité)
Le problème le plus fréquent ave les appels récursifs: le débordement
de pile; Si le nombre d'appels récursifs devient trop grand (et ça peut
arriver très vite), le programme consomme toute la mémoure jusqu'à un
débordement de pile conduisant à un plantage du programme.
Alors, y a t'il d'autres voies?
Oui il y en a, parfois. La récursivité terminale est moins couteuse
que la récursivité non terminale:
http://cermics.enpc.fr/polys/info1/main/node22.html
En fait, un bon compilateur saura remplacer des appels récursifs
terminaux par du code itératif.
La récursivité doit s'employer à boin escient, c'est parfois un
bon moyen (exemple: le problème des tours de Hanoi, comme indiqué
par Jacques). Dans d'autre cas, il est inutile et peu efficace
(voire très mauvais) de recourir à la récursivité (exemple: le
calcul de la fonction factorielle).
Le cas que tu donnais en exemple ("Bonjour" => "Rebonjour") ne
se programmerait certainement pas avec un appel récursif dans un
vrai programme.
--
Jean-marc
Tester mon serveur (VB6) => http://myjmnhome.dyndns.org
"There are only 10 kind of people
those who understand binary and those who don't."
mailto: remove '_no_spam_' ;