Bắt đầu ngayBắt đầu miễn phí

Tính căn bậc hai với vòng lặp for

Tương tự như trong R, vòng lặp for của C++ chạy cùng một đoạn mã một số lần xác định, chỉ thay đổi giá trị chỉ số ở mỗi lượt lặp. Tuy nhiên, cú pháp của for trong C++ phức tạp hơn R một chút.

for(int i = 0, i < n, i++) {
  // Do something
}
  • int i = 0 khai báo chỉ số là một số nguyên (trường hợp thường gặp nhất) và đặt giá trị là 0 ở lượt lặp đầu tiên.
  • i < n đặt điều kiện lặp: khi i đạt giá trị n, điều kiện này không còn đúng và vòng lặp sẽ dừng.
  • i++ nghĩa là tăng giá trị của i thêm 1 ở mỗi lượt lặp.

Tại đây bạn sẽ hoàn thiện định nghĩa một hàm để tính căn bậc hai bằng phương pháp Babylon. (Trong mã thực tế, bạn nên dùng sqrt() vì nó sử dụng thuật toán hiện đại nhanh hơn.)

Bài tập này là một phần của khóa học

Tối ưu hóa mã R với Rcpp

Xem khóa học

Hướng dẫn bài tập

  • Khởi tạo một biến cục bộ double x bằng một.
  • Chỉ định một vòng lặp for.
    • Khởi tạo một số nguyên, i, bằng 0.
    • Đặt điều kiện lặp là i nhỏ hơn n.
    • Tăng i thêm một ở mỗi bước.

Bài tập tương tác thực hành trực tiếp

Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.

#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)
*/
Chỉnh sửa và Chạy Mã