آموزش برنامه نویسی و طراحی وب




این مقاله جز یک گروه آموزشی می باشد. لیست آموزش ها در زیر هستند

آموزش java

مقدمات زبان جاوا قسمت 1
مقدمات زبان جاوا
انواع داده‌ها در جاوا Data type قسمت 2
انواع داده‌ها در جاوا Data type
آماده سازی محیط برنامه نویسی و اجرای برنامه‌های جاوا قسمت 3
آماده سازی محیط برنامه نویسی و اجرای برنامه‌های جاوا
ساختار های کنترلی در جاوا قسمت 4
ساختار های کنترلی در جاوا
عملگر ها در جاوا operator قسمت 5
عملگر ها در جاوا operator
عبارات یا expression ها در جاوا قسمت 6
عبارات یا expression ها در جاوا
متغییر های نوع داده اولیه و متغییر های مرجع قسمت 7
متغییر های نوع داده اولیه و متغییر های مرجع
متغییر ها و ثوابت در جاوا قسمت 8
متغییر ها و ثوابت در جاوا
متد بازگشتی در جاوا قسمت 9
متد بازگشتی در جاوا
کلاس ها در جاوا قسمت 10
کلاس ها در جاوا
نمونه سازی کلاس و ایجاد متغییر مرجع قسمت 11
نمونه سازی کلاس و ایجاد متغییر مرجع
سازنده ها در جاوا قسمت 12
سازنده ها در جاوا
اشاره گر this قسمت 13
اشاره گر this
معرفی چند کلاس کاربردی جاوا قسمت 14
معرفی چند کلاس کاربردی جاوا
آرایه چیست قسمت 15
آرایه چیست
وراثت چیست قسمت 16
وراثت چیست
متد بازگشتی در جاوا

it3du  
2016-10-20 15:24:43  
1723  
java  

متد بازگشتی در جاوا

 

متد های بازگشتی و کاربرد آن ها در جاوا

 

مفهوم بازگشتی در جاوا

بازگشتی به مفهومی گفته می شود، که در آن متدی خودش را فراخوانی کند. متد ها می توانند خودشان را به صورت مستقیم و غیر مستقیمفراخوانی کنند.

در روش مستقیم یکی از دستورات موجود در بدنه متد فراخوانی خودش است. اما در روش غیر مستقیم مثلا متد f1 متذ f2 را فراخوانی می کند و f1 دوباره توسط f2 خودش را فراخوانی می کند. کد زیر را ببینید :

 

int m1(int n) {
    n++;
    m1(n);
}

 

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

بنابراین طرح کلی الگوریتم های بازگشتی به صورت زیر است

  • یک یا چند حالت که در آن متد، وظیفه خودش را به صورت بازگشتی انجام می دهد. یعنی این حالت ها خاصیت بازگشتی دارند.
  • یک یا چند حالت که در آن، متد وظیفه خودش را بدون فراخوانی بازگشتی انجام می دهد. این حالت را حالت های توقف یا stop cases گویند.

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

 

if (به حالت توقف رسیدی) {
    مسئله حالت توقف را حل کن
} else {
    تابع را بار دیگر فراخوانی کن
}

 

مفهوم بازگشتی ابزاری قدرتمند برای برنامه نویسان است و درک آن برای برنامه نویس میتدی قدری دشوار است. با مثالی به درک بهتر آن می پردازیم و جنبه های تکنیکی آن را مورد بحث قرار نمی دهیم.

یک مثال خوب برای یادگیری مفهوم بازگشتی فاکتوریل  می باشد.

 

if n = 0 then n! = 1 
if n > 0 then n! = 1 * 2 * 3 * ... * (n-1) * n

 

بر اساس این تعریف داریم :

 

4! = 3! * 4

 

در واقع برای هر n > 0 داریم :

 

n! = n * (n-1)!

 

این تعریف، فاکتوریل را بر حسب خودش تعریف می کند. یعنی فاکتوریل هر عدد، باید با فاکتوریل عدد قبلی اش محاسبه شود. لذا برای محاسبه فاکتوریل عدد 3، باید فاکتوریل عدد 2 را محاسبه کنیم، برای محاسبه فاکتوریل عدد 2 باید فاکتوریل عدد 1 را محاسبه کنیم، و الی آخر تا به فاکتوریل 0 برسیم.

این مکانیزم، مسئله بازگشتی ایجاب می کند. روند زیر، محاسبه می شود

 

3! = 3 * 2!
2! = 2 * 1!
1! = 1 * 0!
0! = 1

 

خودت بنویس : برنامه ایی که یک عدد صحیح از ورودی بگیرد و فاکتوریل آن را محاسبه کند

 

import java.util.*;
 
public class example_6 {
    static Scanner scnr = new Scanner(System.in);
    public static void main(String[] args) {
        int n = 0;
        System.out.print("Enter a number : ");
        n = scnr.nextInt();
        System.out.println("fact(" + n + ") = " + fact(n) );
    }
     
    public static long fact(int n) {
        if (n != 0) {
            return n * fact (n-1);
        }
        return 1;
    }
}

 

 

می توانید انتشار قسمت ها جدید آموزش برنامه نویسی و به روز رسانی های جدید سایت را از کانال تلگرام ما دنبال کنید  و یا از قسمت انتهایی سایت ، آدرس it3du را در سایر شبکه های اجتماعی پیدا کنید

 

 

منبع: it3du



به اشتراک بگذارید

فیس نما   فیس نما   فیس نما   فیس نما   فیس نما   فیس نما   فیس نما   کلوب   فیس نما  

مطالب مرتبط


دیدگاه کاربران

دیدگاهی وجود ندارد


دیدگاهی ارسال کنید

  نظر شما پس از تایید نویسنده نمایش داده می شود

  نظرات به صورت فینگلیش تایید و جواب داده نمی شوند

  برای وارد کردن کد برنامه نویسی متن بالای تکست باکس را مطالعه فرمایید

  گزینه captcha برای تشخیص انسان از ربات را حتما قبل از ارسال انتخاب کنید

  ایمیل شما در سایت منتشر نمی شود

  پر کردن فیلد های ستاره دار الزامی می باشد

نام *
ایمیل *
وب سایت

استفاده از کد HTML مجاز نمی باشد

متن های انتخاب شده را می توانید با دکمه p به پاراگراف تبدیل کنید

برای وارد کردن کد برنامه نویسی ابتدا متن مورد نظرتان را انتخاب کنید و سپس زبان مورد نظر خودتان را از طریق دکمه ها انتخاب کنید

محتوای دیدگاه *

خروجی کامنت