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 = 0declară indexul ca întreg (cazul cel mai frecvent) și îi setează valoarea la0la prima iterație.i < nstabilește condiția de iterație: cândiajunge la valoarean, condiția nu mai este îndeplinită și bucla se oprește.i++înseamnă că valoarea luiicrește cu1la 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
Instrucțiuni pentru exercițiu
- Inițializează o variabilă locală
doublex cu valoarea unu. - Specifică o buclă
for.- Inițializează un întreg,
i, cu valoarea0. - Setează condiția de iterație:
imai mic decâtn. - Incrementează
icu unu la fiecare pas.
- Inițializează un întreg,
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)
*/