Fonction récursive pour calculer la somme?
C'est ce que j'ai et je ne sais pas pourquoi ça ne fonctionne pas
def sum(n):
if (n>0):
print (n)
return sum(n)+sum(n-1)
else:
print("done doodly")
number = int(input(": "))
sum(number)
Par exemple, si l'utilisation des intrants 5, je veux programme pour calculer la somme de 5+4+3+2+1. Ce que je fais mal ?
Vous devez vous connecter pour publier un commentaire.
Deux choses:
sum(n)
lors du calcul desum
pourn
ne sera pas vous faire beaucoup de bien parce que vous allez répéter indéfiniment. De sorte que la lignereturn sum(n)+sum(n-1)
est incorrect; il doit êtren
, plus la somme de lan - 1
d'autres valeurs. Cela a aussi du sens que c'est ce que vous voulez calculer.En tant que tel, vous pouvez simplifier votre code:
print sum(n)
- laissez la valeur de retour desum
être l'argument deprint
.sum
calculer le résultat et puis, après il est fait, de l'imprimer.Vous avez oublié de
return
quandn==0
(dans votreelse
)Vous pouvez compliquer votre code:
L'avantage c'est que maintenant que vous n'utilisez
log(n)
pile au lieu den
pileLa récursivité est une mauvaise façon de calculer la somme des n premières, puisque vous faites de l'ordinateur pour faire de la
n
calculs (Ce qui s'exécute en O(n) fois.) ce qui est un gaspillage.Vous pourriez même utiliser le haut-
sum()
fonction avecrange()
, mais en dépit de ce code est à la recherche agréable et propre, il continue à s'exécuter en O(n):Au lieu de la récursivité, je recommande d'utiliser l'équation de la somme de l'arithmétique de la série, puisqu'Il s'exécute en O(1) heure:
Je pense que vous pouvez utiliser la sous fonction mathématique(complexité O(1)) au lieu d'utiliser la récursivité(complexité O(n))
En Utilisant La Récursivité