Bir prosedür veya işlev, içindeki başka bir prosedüre çağrı içerebilir. Dahil olmak üzere, alt program kendisini arayabilir. Bu durumda, bilgisayar umursamıyor. Ayrıca, her zaman olduğu gibi, yukarıdan aşağıya tanıştığı komutları tutarlı bir şekilde yürütür.
Matematiği hatırlarsanız, orada matematiksel tümevarım ilkesi ile tanışabilirsiniz. Aşağıdaki gibidir:
Belirli bir ifade her doğal n için doğrudur, eğer
1. n = 1 ve
için geçerlidir
2. Herhangi bir keyfi doğal n = k için önermenin geçerliliğinden, n = k+1 için doğru olduğu sonucu çıkar.
Programlamada bu tekniğe özyineleme
denir
Yineleme, verilen basit temel durumlara dayalı olarak, bir nesne kümesini kümenin kendisi açısından tanımlamanın bir yoludur.
Tekrarlı kendini doğrudan veya diğer prosedürler ve işlevler aracılığıyla çağıran bir prosedür (işlev) olarak da adlandırılır
Özyinelemeli bir prosedür örneği:
prosedür Rec(a: tamsayı);
başlamak
eğer bir > 0 o zaman
Tavsiye(a - 1);
yaz(a);
bitiş;
Şematik olarak, özyineleme işi bir akış şemasıyla temsil edilebilir.
Rec() prosedür parametre 3 ile yürütülür. Ardından, parametre 3 ile prosedür içinde, parametre 2 ile prosedür çağrılır ve parametre 0 ile prosedür çağrılana kadar böyle devam eder. 0 parametresi çağrıldığında, özyinelemeli çağrı zaten gerçekleşmeyecek ve 0 parametresiyle yapılan prosedür 0 sayısını yazdıracak ve sonlandırılacaktır. Daha sonra kontrol 1 parametresi ile prosedüre geri aktarılır, o da 1 sayısını yazdırarak işini bitirir ve bu böyle devam eder. parametre 3 ile prosedürden önce.
Çağrılan tüm prosedürler, işlerini tamamlayana kadar hafızada saklanır. Eşzamanlı prosedürlerin sayısı tekrarlama derinliği
olarak adlandırılır.