ÎncepețiÎncepe gratuit

Calcularea rădăcinilor pătrate cu o buclă for

La fel ca în R, buclele for din C++ execută același cod de un număr specificat de ori, modificând doar valoarea unui index la fiecare iterație. Sintaxa unei bucle for este însă puțin mai complexă decât în R.

for(int i = 0, i < n, i++) {
  // Do something
}
  • int i = 0 declară indexul ca întreg (cazul cel mai frecvent) și îi setează valoarea la 0 la prima iterație.
  • i < n stabilește condiția de iterație: când i ajunge la valoarea n, condiția nu mai este îndeplinită și bucla se oprește.
  • i++ înseamnă că valoarea lui i crește cu 1 la fiecare iterație.

Aici vei completa definiția unei funcții pentru calcularea rădăcinii pătrate folosind metoda babiloniană. (În cod real, ar trebui să folosești direct sqrt(), care utilizează un algoritm modern mai rapid.)

Acest exercițiu face parte din cursul

Optimizarea codului R cu Rcpp

Vezi cursul

Instrucțiuni pentru exercițiu

  • Inițializează o variabilă locală double x cu valoarea unu.
  • Specifică o buclă for.
    • Inițializează un întreg, i, cu valoarea 0.
    • Setează condiția de iterație: i mai mic decât n.
    • Incrementează i cu unu la fiecare pas.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

#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)
*/
Editează și rulează codul