開始使用免費開始

用 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)(https://en.wikipedia.org/wiki/Methodsofcomputingsquareroots)。在實務程式碼中,你應該直接使用 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)
*/
編輯並執行程式碼