Apakah Java Recursion?
Senario di mana fungsi atau kaedah memanggil dirinya sendiri dikenali sebagai rekursif dan fungsi atau kaedah sedemikian dikenali sebagai fungsi rekursif atau kaedah rekursif. Pendekatan ini sentiasa digunakan untuk memecahkan masalah yang kompleks kepada yang mudah dan lebih mudah untuk ditulis. Contoh mudah ialah meletakkan dua cermin di hadapan satu sama lain dan ia akan mula memantulkan satu sama lain secara rekursif yang boleh anda lihat dengan mudah.Rekursi Tidak Langsung
Contoh di atas mewakili rekursi tidak langsung , iaitu fungsi satu memanggil fungsi dua dan fungsi dua memanggil fungsi satu.Rekursi Langsung
Apabila kaedah memanggil dirinya berulang kali, ia dipanggil rekursi langsung .Keadaan Terhenti
Sekarang anda akan berfikir jika kaedah memanggil sendiri lagi dan lagi maka pasti ia akan menghadapi ralat Limpahan Tindanan . Ya, anda betul, seperti gelung tak terhingga ia boleh masuk ke rekursi tak terhingga. Kita mesti menyediakan syarat asas atau syarat penamatan untuk menghentikan pengulangan tak terhingga ini, yang dikenali sebagai keadaan terhenti, dan syarat ini sentiasa disediakan di dalam kaedah pengulangan, yang akan kita lihat secara terperinci dalam contoh di bawah.Contoh Rekursi
class Recursion {
static int factorial( int n ) {
// base condition or termination condition
if (n != 0)
// here we are calling the recursive method
return n * factorial(n-1);
else
return 1;
}
public static void main(String[] args) {
// initializing the variables
int number = 5, result;
result = factorial(number);
System.out.println(number + " factorial = " + result);
// changing the value from 5 to 10
number = 10;
result = factorial(number); // recursive function call
System.out.println(number + " factorial = " + result);
}
}
Contoh Output
5 faktorial = 120 10 faktorial = 3628800
Dalam contoh kaedah berulang ini kita mempunyai faktorial fungsi yang dipanggil daripada kaedah utama. Kami melepasi nilai 5 untuk melihat apakah faktorialnya, iaitu 120. Fungsi faktorial ini memanggil dirinya semula dengan menghantar nilai 4, yang sekali lagi memanggil dan melepasi nilai 3, dan seterusnya, sehingga keadaan berhenti adalah bertemu, iaitu nilai 0. Perkara yang sama berlaku apabila kita menukar nilai daripada 5 kepada 10.