Calcolare le radici quadrate con un ciclo for
Come in R, i cicli for in C++ eseguono lo stesso codice un numero specificato di volte, cambiando solo il valore di un indice a ogni iterazione. La sintassi di un ciclo for, però, è leggermente più complessa rispetto a R.
for(int i = 0, i < n, i++) {
// Do something
}
int i = 0dichiara l’indice come intero (il caso più comune) e imposta il valore a0nella prima iterazione.i < ndefinisce la condizione di iterazione: quandoiraggiunge il valoren, questa condizione fallisce e il ciclo si ferma.i++significa aumentare il valore diidi1a ogni iterazione.
Qui completerai la definizione di una funzione per calcolare la radice quadrata usando il metodo babilonese. (Nel codice reale, usa semplicemente sqrt(), che adotta un algoritmo moderno più veloce.)

Questo esercizio fa parte del corso
Ottimizzare il codice R con Rcpp
Istruzioni dell'esercizio
- Inizializza una variabile locale
doublex a uno. - Specifica un ciclo
for.- Inizializza un intero,
i, a0. - Imposta la condizione di iterazione come
iminore din. - Incrementa
idi uno a ogni passo.
- Inizializza un intero,
Esercizio pratico interattivo
Prova a risolvere questo esercizio completando il codice di esempio.
#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)
*/