ورود

View Full Version : فراخوانی یک متد توسط خودش برای محاسبه فاکتوریل یک عدد



Sina.iRoid
یک شنبه 09 شهریور 1393, 10:45 صبح
سلام دوستان. ممنون میشم اگر راهنماییم کنید.

من می خوام برنامه محاسبه فاکتوریل و رو بنویسم، و می خوام یک متد و داخل خودش فراخوانی کنم.

این کد کلاس فاکتوریل هست:


public class Factorial {

int fact(int n){
int result;

if(n == 1) return n;
if(n == 0) return 1;

result = fact(n - 1) * n;

return result;
}
}


و این هم کد کلاس اصلی برنامه:


public class DriverClass {

public static void main(String[] args){

Factorial f = new Factorial();

System.out.print(f.fact(4));
}
}


این برنامه هیچ مشکلی نداره و اجرا میشه. اما سوال من اینه که:
من این برنامه رو به شکل دیگه ای، یعنی با تعریف دو متغیر دیگه و قرار دادن داخل یه حلقه for، فاکتوریل و حساب کردم. اما برای این برنامه اصلا حلقه ای و ننوشتم و درست اجرا شد.
من می خواستم دقیقا بدونم داخل کلاس فاکتوریل چه اتفاقی می افته. ( با اینکه حلقه ای وجود نداره، اما جواب درست است).
ممنون اگر راهنماییم کنید.:لبخندساده:

ahmad.mo74
یک شنبه 09 شهریور 1393, 12:21 عصر
به اینحور توابع میگن Recursion (درباره Stack هم مطالعه کنی بیشتر طرز کارشو میفهمی) و معمولا برای حل مسائل پیچیده ریاضی ازش استفاده میکنن که با یه سرچ ساده میتونی مفصل دربارش اطلاعات کسب کنی و مثال های زیادی هم گذاشتن واسش (مثل برج هانوی و دنباله فیبوناچی و ...) ولی برای مسائل ساده مثل همین فاکتوریل و فیبوناچی خیلی توصیه نمیشه از Recursion استفاده کنید و راه های ساده تر مثل همون for نوشتن بهتره... اگر توضیحات بیشتر خواستی ما در خدمتیم :)

Sina.iRoid
یک شنبه 09 شهریور 1393, 13:32 عصر
سلام. سپاس از شما برای پاسخ.

در مورد stack، همون مبحثی که در ساختمان داده ها هست و میگین دیگه. درسته؟

ahmad.mo74
یک شنبه 09 شهریور 1393, 16:31 عصر
سلام، خواهش میکنم

بله منظورم مفهوم stack هست