BaşlayınÜcretsiz başlayın

Bir for döngüsüyle karekök hesaplama

R'de olduğu gibi, C++'ta da for döngüleri aynı kodu belirli sayıda kez çalıştırır ve her yinelemede yalnızca indeks değerini değiştirir. Ancak for döngüsünün söz dizimi R'ye göre biraz daha karmaşıktır.

for(int i = 0, i < n, i++) {
  // Do something
}
  • int i = 0, indeksi tamsayı (en yaygın durum) olarak tanımlar ve ilk yinelemede değerini 0 yapar.
  • i < n, yineleme koşulunu belirler: i değeri n'e ulaştığında bu koşul sağlanmaz ve döngü durur.
  • i++, her yinelemede i değerini 1 artır anlamına gelir.

Burada, Babil yöntemi ile karekök hesaplayan bir fonksiyonun tanımını tamamlayacaksın. (Gerçek dünyadaki kodlarda, daha hızlı modern bir algoritma kullanan sqrt()'ü kullanmalısın.)

Bu egzersiz, kursun bir parçasıdır

Rcpp ile R Kodunu Optimize Etme

Kursa Göz Atın

Egzersiz talimatları

  • Yerel bir double x'i bir olarak başlat.
  • Bir for döngüsü belirt.
    • Bir tamsayı i'yi 0 olarak başlat.
    • Yineleme koşulunu i, n'den küçük olacak şekilde ayarla.
    • Her adımda i'yi bir artır.

Uygulamalı etkileşimli egzersiz

Bu egzersizi bu örnek kodu tamamlayarak deneyin.

#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)
*/
Kodu Düzenle ve Çalıştır