Récurrence de séquence harmonique
Je suis vraiment obtenir le coup de la récursivité (ou du moins je le pense), mais ce problème est de déclenchement à moi. Je suis en train de revenir 1 + 1/2 + 1/3 + ... + 1/n, mais peu importe ce que j'essaie la méthode retourne 1.0. Je ne peux pas pour la vie de me comprendre quel est le problème.
public static double harmonic(int n) {
if(n == 1) {
return 1;
} else {
return (1 / n) + (1 / harmonic(n - 1));
}
}
source d'informationauteur vaindil
Vous devez vous connecter pour publier un commentaire.
Bien, pour un, vous ne voulez pas rentrer
(1 /n) + (1 /harmonic(n - 1))
mais aussi vous avez besoin d'utiliserdouble
arithmétique:Si vous l'avez laissé comme
1 /harmonic
vous souhaitez renvoyer une autre fonction tout à fait:Qui est très confus fonction à comprendre, d'ailleurs, mais je pense (à mon 3ème édition en temps) je l'ai eu droit cette fois.
Vous souhaitez utiliser floating point de la division:
Qui est:
1/2
est0
;1/2.0
est0.5
.Vous avez besoin d'utiliser des doubles. Maintenant, vous êtes en train de faire
1 /n
qui sont tous les deux des entiers. Modifier:C'est parce que la division entière donne le résultat sous forme d'entier.
Donc,
1/2 == 0
Vous pouvez utiliser plutôt l'utilisation d'
floating-point
division comme ceci: -Utilisation de doubles dans votre division de calculs. Actuellement, tout est jeté à l'ints, perdre tout à virgule flottante de précision vous auriez normalement s'attendre.
la récursivité ne doivent pas inclure 1/harmonique(n-1)
il devrait être