0
votes

Écrire une fonction itérative

J'écris un programme qui résout un système d'équations de lineaire. J'ai besoin de gérer certaines itérations afin de voir ma valeur objective s'améliorer. J'ai d'abord écrit le programme avec la rédaction de fonctions d'impression au bas de mon fichier. J'ai donc fait les itérations moi-même essentiellement. Je veux maintenant écrire le nombre d'itérations comme un argument d'imputation pour la fonction.

J'ai essayé de travailler avec pendant et que des boucles, mais cela ne semblait pas travailler pour moi. Alors maintenant j'ai essayé le format comme vous pouvez le voir ci-dessous. Je n'ai pas mis mon programme entier ici, mais la structure de base de ce qu'elle fait. xxx

Quand j'ai ier = 0, cela me donne la valeur immédiate de x. Mais quand iter> 0, je n'obtiens pas "Néanmoins" ... Est-ce que quelqu'un peut expliquer pourquoi cela le fait et aidez-moi à résoudre mon programme? Merci!


3 commentaires

Erreur commune - vous ne retournez pas le résultat de l'appel récursif.


Préférez une boucle simple à la récursion; pour _ dans la plage (ITER): a, x, c = A / 2, x / 2, c / 2; Retour x .


Dupliqué possible de Pourquoi ma fonction de python récursive ne renvoie-t-elle aucune?


3 Réponses :


2
votes
def function(A,x,c,iter):
    if iter == 0:
        return x
    else:
        A = 1/2 * A
        c = 1/2 * c
        x1 = 1/2 * x

        iter = iter - 1

        return function(A,x1,c,iter)
You just didn't return the value of the else and Python functions return None when there is not return statement.

0 commentaires

0
votes

Ajoutez un retour dans la dernière ligne afin que la valeur soit renvoyée après exécution de la fonction: Fonction de retour (A, X1, C, ITER)


0 commentaires

0
votes

comme un pour boucle, il ressemblerait à: xxx

comme une note, n'utilisez pas iter pour la nommée variable puisque elle est une fonction python intégrée.


0 commentaires