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ğerini0yapar.i < n, yineleme koşulunu belirler:ideğerin'e ulaştığında bu koşul sağlanmaz ve döngü durur.i++, her yinelemedeideğerini1artı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
Egzersiz talimatları
- Yerel bir
doublex'i bir olarak başlat. - Bir
fordöngüsü belirt.- Bir tamsayı
i'yi0olarak başlat. - Yineleme koşulunu
i,n'den küçük olacak şekilde ayarla. - Her adımda
i'yi bir artır.
- Bir tamsayı
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)
*/