3 votes

Comment relancer une fonction lorsqu'une condition "if" est remplie ?

Comment puis-je "redémarrer" ma fonction lorsqu'une condition "if" est ou n'est pas remplie.
Dans ce pseudocode, si la condition if est remplie, je voudrais arrêter ce que la fonction était en train de faire et recommencer à nouveau.

function example()

     .
     .
     .

 for i in 1:N
        for j in 1:N
            if Mat[i,j] > 1
                Mat[i,j] += restart? # Here the process should restart,
            end
        end
    end

2voto

Mikael Öhman Points 253

Plutôt que d'ajouter des branchements supplémentaires et de compliquer une fonction, les valeurs de retour offrent une grande possibilité de flux de contrôle de façon beaucoup plus propre. L'ajout d'une petite fonction séparée est simple

function do_thing_once!(mat)
    # Returns true if successful
    for i in 1:N
        for j in 1:N
            if mat[i,j] > 1
                mat[i,j] += 123
                return false
            end
        end
    end
    return true
end

function do_all_things!(mat)
    success = false
    while !success
        success = do_thing_once!(mat)
    end
end

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X