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 = 0déclare l’index comme un entier (le cas le plus courant) et fixe sa valeur à0lors de la première itération.i < ndéfinit la condition d’itération : lorsqueiatteint la valeurn, cette condition échoue et la boucle s’arrête.i++signifie augmenter la valeur deide1à 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
Instructions
- Initialisez une variable locale
doublex à un. - Spécifiez une boucle
for.- Initialisez un entier,
i, à0. - Définissez la condition d’itération comme
iinférieur àn. - Incrémentez
id’une unité à chaque étape.
- Initialisez un entier,
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)
*/