始める無料で始める

for ループで平方根を計算する

R と同様に、C++ の for ループは、各反復でインデックス値だけを変えながら、同じコードを指定回数だけ実行します。ただし、for ループの構文は R より少し複雑です。

for(int i = 0, i < n, i++) {
  // Do something
}
  • int i = 0 はインデックスを整数(最も一般的なケース)として宣言し、最初の反復で値を 0 に設定します。
  • i < n は反復条件を設定します。in に達するとこの条件は偽になり、ループは停止します。
  • i++ は各反復で i の値を 1 増やすことを意味します。

ここでは、Babylonian method を使って平方根を計算する関数定義を完成させます。(実際のコードでは、より高速な現代的アルゴリズムを使う sqrt() を使用するのがよいです。)

この演習はコースの一部です

Rcpp で R コードを最適化する

コースを見る

演習の手順

  • ローカルな double 変数 x を 1 に初期化します。
  • for ループを指定します。
    • 整数 i0 に初期化します。
    • 反復条件を in より小さいことに設定します。
    • 各ステップで 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)
*/
コードを編集して実行