Výpočet odmocnin pomocí cyklu for
Stejně jako v R i v C++ cyklus for spouští stejný kód zadaný počet opakování – v každé iteraci se mění pouze hodnota indexu. Syntaxe cyklu for je ale o něco složitější než v R.
for(int i = 0, i < n, i++) {
// Do something
}
int i = 0deklaruje index jako celé číslo (nejběžnější případ) a nastavuje jeho hodnotu na0v první iteraci.i < nurčuje podmínku iterace: jakmileidosáhne hodnotyn, podmínka přestane platit a cyklus se zastaví.i++znamená, že se hodnotaiv každé iteraci zvýší o1.
Tady dokončíš definici funkce pro výpočet odmocniny pomocí babylonské metody. (V produkčním kódu bys samozřejmě použil/a sqrt(), která využívá rychlejší moderní algoritmus.)

Toto cvičení je součástí kurzu
Optimizing R Code with Rcpp
Pokyny k cvičení
- Inicializuj lokální proměnnou
xtypudoublena hodnotu jedna. - Definuj cyklus
for.- Inicializuj celé číslo
ina0. - Nastav podmínku iterace tak, aby
ibylo menší nežn. - Zvyšuj
io jedničku v každém kroku.
- Inicializuj celé číslo
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
#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)
*/