jm.andryszak
XLDnaute Occasionnel
J'ai un problème de point d'arrêt dans la fonction DecompositionRecursif
que je contourne par On Error GoTo err: 'Espace pile insuffisant (Erreur 28)
Cette solution ne me convient pas vraiment.
Quelqu'un aurait-il une solution ?
Merci
Voici le code
Option Explicit
'***********************************************
Dim Facteur
'***********************************************
Function DecompositionRecursif(n As Long, i) As String
'***********************************************
Dim j
Dim Result
'**********************************************
On Error GoTo err: 'Espace pile insuffisant (Erreur 28), Pb de point d'arrêt ??
'Point d'arrêt
If n = 1 Then
Result = Mid(Facteur, 1, Len(Facteur) - 3)
Debug.Print Result
Exit Function 'End
End If
'
j = 0
While n Mod i = 0
n = n / i
j = j + 1
Wend
If j <> 0 Then
Result = i & "^" & j & " * "
End If
Facteur = Facteur & Result
err:
'Espace pile insuffisant (Erreur 28), Pb de point d'arrêt ??
'Arrêt de la récursivité
If err.Number = 28 Then
Debug.Print Facteur & n & " " & EstPremier(n)
Exit Function 'End
'Récursité
Else
DecompositionRecursif = DecompositionRecursif(n, i + 1)
End If
End Function
'***********************************************
Sub Test_DecompositionRecursif()
'***********************************************
Dim Nombre As Long
Dim Debut
'***********************************************
'Nombre = 7 * 5000000
'Nombre = 9
'Nombre = 13 * 2 * 997
'Nombre = 461 * 499987
Nombre = 3 * (152311 + 3 ^ 1 * 19 ^ 1 * 89 ^ 1 * 1607)
Debug.Print Nombre
Facteur = ""
Debut = Timer
DecompositionRecursif Nombre, 2
Debug.Print "fin " & Timer - Debut
End Sub
'***********************************************
que je contourne par On Error GoTo err: 'Espace pile insuffisant (Erreur 28)
Cette solution ne me convient pas vraiment.
Quelqu'un aurait-il une solution ?
Merci
Voici le code
Option Explicit
'***********************************************
Dim Facteur
'***********************************************
Function DecompositionRecursif(n As Long, i) As String
'***********************************************
Dim j
Dim Result
'**********************************************
On Error GoTo err: 'Espace pile insuffisant (Erreur 28), Pb de point d'arrêt ??
'Point d'arrêt
If n = 1 Then
Result = Mid(Facteur, 1, Len(Facteur) - 3)
Debug.Print Result
Exit Function 'End
End If
'
j = 0
While n Mod i = 0
n = n / i
j = j + 1
Wend
If j <> 0 Then
Result = i & "^" & j & " * "
End If
Facteur = Facteur & Result
err:
'Espace pile insuffisant (Erreur 28), Pb de point d'arrêt ??
'Arrêt de la récursivité
If err.Number = 28 Then
Debug.Print Facteur & n & " " & EstPremier(n)
Exit Function 'End
'Récursité
Else
DecompositionRecursif = DecompositionRecursif(n, i + 1)
End If
End Function
'***********************************************
Sub Test_DecompositionRecursif()
'***********************************************
Dim Nombre As Long
Dim Debut
'***********************************************
'Nombre = 7 * 5000000
'Nombre = 9
'Nombre = 13 * 2 * 997
'Nombre = 461 * 499987
Nombre = 3 * (152311 + 3 ^ 1 * 19 ^ 1 * 89 ^ 1 * 1607)
Debug.Print Nombre
Facteur = ""
Debut = Timer
DecompositionRecursif Nombre, 2
Debug.Print "fin " & Timer - Debut
End Sub
'***********************************************