CommencerCommencer gratuitement

Calculer des racines carrées avec une boucle for

Comme en R, les boucles for en C++ exécutent le même code un nombre donné de fois, en ne changeant que la valeur d’un index à chaque itération. La syntaxe d’une boucle for est toutefois un peu plus complexe qu’en R.

for(int i = 0, i < n, i++) {
  // Do something
}
  • int i = 0 déclare l’index comme un entier (le cas le plus courant) et fixe sa valeur à 0 lors de la première itération.
  • i < n définit la condition d’itération : lorsque i atteint la valeur n, cette condition échoue et la boucle s’arrête.
  • i++ signifie augmenter la valeur de i de 1 à chaque itération.

Ici, vous allez terminer la définition d’une fonction qui calcule la racine carrée en utilisant la méthode babylonienne. (Pour du code en production, utilisez simplement sqrt(), qui repose sur un algorithme moderne plus rapide.)

Cet exercice fait partie du cours

Optimiser du code R avec Rcpp

Afficher le cours

Instructions

  • Initialisez une variable locale double x à un.
  • Spécifiez une boucle for.
    • Initialisez un entier, i, à 0.
    • Définissez la condition d’itération comme i inférieur à n.
    • Incrémentez i d’une unité à chaque étape.

Exercice interactif pratique

Essayez cet exercice en complétant cet exemple de code.

#include 
using namespace Rcpp;

// [[Rcpp::export]]
double sqrt_approx(double value, int n) {
    // Initialize x to be one
    double x = ___;
    // Specify the for loop
    ___(int i = ___; ___; ___) {
        x = (x + value / x) / 2.0;
    }
    return x;
}

/*** R
sqrt_approx(2, 10)
*/
Modifier et exécuter le code