Začněte nyníZačněte zdarma

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 = 0 deklaruje index jako celé číslo (nejběžnější případ) a nastavuje jeho hodnotu na 0 v první iteraci.
  • i < n určuje podmínku iterace: jakmile i dosáhne hodnoty n, podmínka přestane platit a cyklus se zastaví.
  • i++ znamená, že se hodnota i v každé iteraci zvýší o 1.

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

Zobrazit kurz

Pokyny k cvičení

  • Inicializuj lokální proměnnou x typu double na hodnotu jedna.
  • Definuj cyklus for.
    • Inicializuj celé číslo i na 0.
    • Nastav podmínku iterace tak, aby i bylo menší než n.
    • Zvyšuj i o jedničku v každém kroku.

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)
*/
Upravit a spustit kód