Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Özyinelemeli prosedür, kendini çağıran bir prosedürdür. Genel olarak, Visual Basic kodu yazmanın en etkili yolu bu değildir.
Aşağıdaki prosedür, orijinal argümanının faktöriyelini hesaplamak için özyinelemeyi kullanır.
Function Factorial(n As Integer) As Integer
If n <= 1 Then
Return 1
End If
Return Factorial(n - 1) * n
End Function
Özyinelemeli Yordamlarla İlgili Dikkat Edilmesi Gerekenler
Sınırlama Koşulları. Özyineleni sonlandırabilecek en az bir koşulu test etmek için özyinelemeli bir yordam tasarlamanız ve makul sayıda özyinelemeli çağrıda böyle bir koşulun karşılanmamış olması durumunu da işlemeniz gerekir. Koşulsuz kesinlikle karşılanabilecek en az bir koşul olmadan, işleminiz sonsuz bir döngüye girme riski taşır.
Bellek Kullanımı. Uygulamanızın yerel değişkenler için sınırlı miktarda alanı var. Bir prosedür kendini çağırdığında, yerel değişkenlerinin ek kopyaları için bu alandan daha fazla kullanır. Bu işlem süresiz olarak devam ederse, sonunda bir StackOverflowException hataya neden olur.
Verimlilik. Özyineleme yerine neredeyse her zaman bir döngü kullanabilirsiniz. Döngüde parametreleri aktarma, ek depolamanın başlatılması ve değerleri döndürme yükü yoktur. Özyinelemeli çağrılar olmadan performansınız çok daha iyi olabilir.
Karşılıklı Özyineleme. İki yordam birbirini çağırırsa çok düşük performans, hatta sonsuz bir döngü gözlemleyebilirsiniz. Böyle bir tasarım, tek bir özyinelemeli yordamla aynı sorunları sunar, ancak algılamak ve hata ayıklamak daha zor olabilir.
Parantezler ile arama. Bir Function
prosedür özyinelemeli olarak kendisini çağırdığında, bağımsız değişken listesi olmasa bile prosedür adından parantez eklemeniz gerekir. Aksi takdirde işlev adı işlevin dönüş değerini temsil eden şekilde alınır.
Test Etme. Özyinelemeli bir yordam yazarsanız, her zaman bazı sınırlayıcı koşulları karşıladığından emin olmak için çok dikkatli bir şekilde test etmelisiniz. Ayrıca, çok fazla özyinelemeli çağrı nedeniyle bellek yetersizliği yaşamadığınızdan emin olun.