用 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)
*/