خرداد ۸, ۱۳۹۸ Mostafa بدون دیدگاه

اگر دنبال برنامه نویس برای ساخت افزونه ،قالب،سایت،برنامه ویندوز،اپلیکیشین اندروید،ربات تلگرام و.... هستید ،سفارش برنامه نویسی را مطالعه نمایید.

توجه : درخواست افزونه ،قالب، اسکریپت و نرم افزار و ... و سوالات و مشکلات خود را در انجمن ارسال نمایید

Recursion یا الگوریتم بازگشتی زمانی اتفاق می افتد که یک متد خود را به کرات صدا بزند. به متدی که خود را فراخوانی می کند، در اصطلاح تابع recursive یا بازگشتی گویند.

این الگوریتم اگرچه سبب کوتاه تر (فشرده تر) شدن کد می شود، با این وجود به پیچیدگی آن نیز افزوده و خوانایی و فهم آن را دشوارتر می نماید.

دستور تعریف و استفاده از یک تابع بازگشتی در جاوا به شرح زیر می باشد :

returntype methodname(){  
//code to be executed  
methodname();//calling same method  
}

پیاده سازی تابع بازگشتی مثال 1: فراخوانی بی نهایت

public class RecursionExample1 {  
static void p(){  
System.out.println("hello");  
p();  
}  
public static void main(String[] args) {  
p();  
}  
}  

خروجی :


hello
hello
...
java.lang.StackOverflowError

 

پیاده سازی تابع بازگشتی مثال 2: فراخوانی خود به دفعات محدود

public class RecursionExample2 {  
static int count=0;  
static void p(){  
count++;  
if(count<=5){  
System.out.println("hello "+count);  
p();  
}  
}  
public static void main(String[] args) {  
p();  
}  
}  

خروجی :
hello 1
hello 2
hello 3
hello 4
hello 5

پیاده سازی تابع بازگشتی مثال 3: محاسبه ی فاکتوریل

public class RecursionExample3 {  
    static int factorial(int n){      
          if (n == 1)      
            return 1;      
          else     
            return(n * factorial(n-1));      
    }      
public static void main(String[] args) {  
System.out.println("Factorial of 5 is: "+factorial(5));  
}  
}  

خروجی :

Factorial of 5 is: 120

نحوه ی عملکرد متد فوق :

factorial(5) 
   factorial(4) 
      factorial(3) 
         factorial(2) 
            factorial(1) 
               return 1 
            return 2*1 = 2 
         return 3*2 = 6 
      return 4*6 = 24 
   return 5*24 = 120

 

پیاده سازی تابع بازگشتی مثال 4: محاسبه ی سری فیبوناتچی

public class RecursionExample4 {  
    static int n1=0,n2=1,n3=0;      
     static void printFibo(int count){      
        if(count>0){      
             n3 = n1 + n2;      
             n1 = n2;      
             n2 = n3;      
             System.out.print(" "+n3);     
             printFibo(count-1);      
         }      
     }          
public static void main(String[] args) {  
    int count=15;      
      System.out.print(n1+" "+n2);//printing 0 and 1      
      printFibo(count-2);//n-2 because 2 numbers are already printed     
}  
}  


خروجی :
0 1 1 2 3 5 8 13 21 34 55 89 144 233 377

 

 


برچسب ها
نظرات

توجه : لطفاً فقط نظرات خود را از این طریق ارسال نمایید و سوالات و مشکلات خود را در انجمن سایت مطرح نمایید.