for ループで平方根を計算する
R と同様に、C++ の for ループは、各反復でインデックス値だけを変えながら、同じコードを指定回数だけ実行します。ただし、for ループの構文は R より少し複雑です。
for(int i = 0, i < n, i++) {
// Do something
}
int i = 0はインデックスを整数(最も一般的なケース)として宣言し、最初の反復で値を0に設定します。i < nは反復条件を設定します。iがnに達するとこの条件は偽になり、ループは停止します。i++は各反復でiの値を1増やすことを意味します。
ここでは、Babylonian method を使って平方根を計算する関数定義を完成させます。(実際のコードでは、より高速な現代的アルゴリズムを使う sqrt() を使用するのがよいです。)

この演習はコースの一部です
Rcpp で R コードを最適化する
演習の手順
- ローカルな
double変数xを 1 に初期化します。 forループを指定します。- 整数
iを0に初期化します。 - 反復条件を
iがnより小さいことに設定します。 - 各ステップで
iを 1 ずつ増やします。
- 整数
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
#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)
*/