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

for döngüsünden çıkmak

Bazen tüm yinelemeleri bitirmeden bir döngüden çıkmak isteyebilirsin. Örneğin, tüm olasılıkları denemeden önce kodun görevini başarıyla tamamlayabilir. break anahtar sözcüğü, bir döngüden erken çıkmak için kullanılabilir.

Kod kalıbı şöyle görünür:

for(int i = 0; i < n; i++) {
  // Do something

  // Test for exiting early
  if(breakout_condition) break;

  // Otherwise carry on as usual
}

Burada, önceki örneği, değer eşik temelli olarak çok fazla değişmediğinde döngü dursun diye yeniden düzenleyeceksin. Fonksiyon, her yinelemedeki yaklaşımı görebilmeni sağlamak için bir List döndürecek şekilde değiştirildi (Listleri bir sonraki bölümde öğreneceksin).

Bu değiştirilmiş sqrt_approx() fonksiyonu, hem karekökü hem de bu sonuca eşiğe göre ulaşmak için geçen yineleme sayısını döndürür.

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

Rcpp ile R Kodunu Optimize Etme

Kursa Göz Atın

Egzersiz talimatları

Çözüm yeterince iyiyse ("isgoodenough" değişkenine göre) tetiklenecek bir break koşulu ekle.

Uygulamalı etkileşimli egzersiz

Bu egzersizi bu örnek kodu tamamlayarak deneyin.

#include 
using namespace Rcpp;

// [[Rcpp::export]]
List sqrt_approx(double value, int n, double threshold) {
    double x = 1.0;
    double previous = x;
    bool is_good_enough = false;
    int i;
    for(i = 0; i < n; i++) {
        previous = x;
        x = (x + value / x) / 2.0;
        is_good_enough = fabs(previous - x) < threshold;
        
        // If the solution is good enough, then "break"
        ___(___) ___;
    }
    return List::create(_["i"] = i , _["x"] = x);
}

/*** R
sqrt_approx(2, 1000, 0.1)
*/
Kodu Düzenle ve Çalıştır