MulaiMulai sekarang secara gratis

Menghitung akar kuadrat dengan for loop

Sama seperti di R, for loop di C++ menjalankan kode yang sama sejumlah kali tertentu, hanya mengubah nilai indeks pada setiap iterasi. Namun, sintaks for loop sedikit lebih kompleks dibandingkan R.

for(int i = 0, i < n, i++) {
  // Do something
}
  • int i = 0 menyatakan indeks sebagai integer (kasus yang paling umum), dan menetapkan nilainya menjadi 0 pada iterasi pertama.
  • i < n menetapkan kondisi iterasi: setelah i mencapai nilai n, kondisi ini tidak terpenuhi dan loop akan berhenti berjalan.
  • i++ berarti menambah nilai i sebesar 1 pada setiap iterasi.

Di sini Anda akan melengkapi definisi fungsi untuk menghitung akar kuadrat menggunakan metode Babilonia. (Untuk kode dunia nyata, sebaiknya gunakan sqrt() saja, yang menggunakan algoritma modern yang lebih cepat.)

Latihan ini adalah bagian dari kursus

Mengoptimalkan Kode R dengan Rcpp

Lihat Kursus

Petunjuk latihan

  • Inisialisasi double lokal x ke satu.
  • Tentukan sebuah for loop.
    • Inisialisasi sebuah integer, i, ke 0.
    • Tetapkan kondisi iterasi sebagai i lebih kecil dari n.
    • Naikkan i satu per langkah.

Latihan interaktif praktis

Cobalah latihan ini dengan menyelesaikan kode contoh berikut.

#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)
*/
Edit dan Jalankan Kode