IniziaInizia gratis

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 = 0 dichiara l’indice come intero (il caso più comune) e imposta il valore a 0 nella prima iterazione.
  • i < n definisce la condizione di iterazione: quando i raggiunge il valore n, questa condizione fallisce e il ciclo si ferma.
  • i++ significa aumentare il valore di i di 1 a 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

Visualizza il corso

Istruzioni dell'esercizio

  • Inizializza una variabile locale double x a uno.
  • Specifica un ciclo for.
    • Inizializza un intero, i, a 0.
    • Imposta la condizione di iterazione come i minore di n.
    • Incrementa i di uno a ogni passo.

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)
*/
Modifica ed esegui il codice