Calculando raízes quadradas com um laço for
Assim como em R, laços for em C++ executam o mesmo código um número específico de vezes, alterando apenas o valor de um índice a cada iteração. A sintaxe de um laço for é um pouco mais complexa do que em R.
for(int i = 0, i < n, i++) {
// Do something
}
int i = 0declara o índice como um inteiro (o caso mais comum) e define o valor como0na primeira iteração.i < ndefine a condição de iteração: quandoiatingir o valorn, essa condição falha e o laço para de executar.i++significa aumentar o valor deiem1a cada iteração.
Aqui, você vai completar a definição de uma função para calcular a raiz quadrada usando o método babilônico. (Em código real, é melhor usar sqrt(), que aplica um algoritmo moderno mais rápido.)

Este exercicio faz parte do curso
Otimizando código R com Rcpp
Instruções do exercicio
- Inicialize uma variável local
doublex como um. - Especifique um laço
for.- Inicialize um inteiro,
i, como0. - Defina a condição de iteração como
imenor quen. - Incremente
iem um a cada passo.
- Inicialize um inteiro,
exercicio interativo prático
Tente este exercicio completando este código de exemplo.
#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)
*/