جاوا
جلسه ۶۰: محاسبه دنباله فیبوناچی به روش بازگشتی در جاوا

در این درس ، ما یاد خواهیم گرفت که چگونه دنباله فیبوناچی را با روش بازگشتی محاسبه کنیم.موارد زیر را بیان خواهیم کرد:متد
- دنباله فیبوناچی چیست؟
- فرمول ریاضی
- پیاده سازی کد
- تفسیر کد
- متد
main
- متد بازگشتی
- حالت پایه
- حالت بازگشتی
- نمایش روش بازگشتی در پشته
دنباله فیبوناچی چیست؟
دنباله فیبوناچی یکی از معروف ترین فرمول ها در ریاضیات است. هر عدد از توالی مجموع دو عددی است که قبل از آن هستند.این ، دنباله به صورت زیر است:۰, ۱, ۱, ۲, ۳, ۵, ۸, ۱۳, ۲۱, ۳۴, ۵۵, ۸۹, ۱۴۴, …
فرمول ریاضی
هر عدد در موقعیتn
در دنباله را می توان با استفاده از معادله زیر محاسبه کرد:n =Fn-2+Fn-1
به طور پیش فرض ، جمله اول و دوم در دنباله به ترتیب ۰ و ۱ است.1 = ۰
F2 = ۱
F3 =F1+F2 =۱ + ۰= ۱
F4 =F2+F3 =۱ + ۱= ۲
F5 =F3+F4 =۱ + ۲= ۳
F6 =F4+F5 =۲ + ۳= ۵
F7 =F5+F6 =۳ + ۵= ۸
F8 =F6+F7 =۵ + ۸= ۱۳
در زیر تصویری برای محاسبه هشت عنصر اول در دنباله فیبوناچی آورده شده است:پیاده سازی کد
با تغییر متغیرinput
در کد زیر می توانید تعدادی دلخواه از جملات فیبوناچی را چاپ کنید.class FibonacciClass {
private static int fibonacci(int n) {
// Base case
if (n <= 1) {
return n;
}
// Recursive case
else {
return (fibonacci(n-1) + fibonacci(n-2));
}
}
public static void main( String args[] ) {
int input = 5;
System.out.println("Fibonacci sequence for the first " + input + " elements is:");
// Loop to print all the fibonacci sequence elements
int i = 0;
while (i < input) {
System.out.print(fibonacci(i) + " ");
i++;
}
}
}
تفسیر کد
در کد بالا ، متدfibonacci
یک متد بازگشتی است ، زیرا خود را در بدنه اش فراخوانی می کند. در زیر توضیحات کد بالا آورده شده است:متد main
- در داخل متد
main
، ما دو متغیرinteger
با نام هایi
وinput
تعریف کرده ایم. - i به عنوان شمارنده حلقه استفاده شده است و
input
تعداد جملاتی از دنباله فیبوناچی است که تولید می شود. - حلقه
while
به تعداد دفعاتinput
اجرا می شود و به تعدادinput
، اعداد توالی فیبوناچی را در ورودی چاپ می کند. به عنوان مثال ، وقتیinput
برابر ۵ باشد ، متدmain
پنج عدد اول دنباله فیبوناچی را چاپ می کند.
متد بازگشتی
- نوع بازگشتی این متد
int
است زیرا تمام مقادیر دنباله فیبوناچی عدد صحیح هستند. - این متد یک عدد صحیح ،
n
را به عنوان آرگومان ورودی دریافت می کند.
حالت پایه
- حالت پایه متد در خط ۵ تعریف شده است که در صورتی که در این خط شرط if یعنی
n <= 1
برقرار باشد، متد بازگشتی خاتمه می یابد و مقدار جملهn
ام از دنباله فیبوناچی را باز می گرداند.
حالت بازگشتی
- اگر شرط حالت پایه برقرار نباشد ، این متد وارد بلوک
else
می شود (از خط ۹ تا خط ۱۱) ، جایی که با آرگمان های ورودی فرمول ریاضی ، خودش را به صورت بازگشتی فراخوانی می کند:"retracement (n-1) + retracement (n-2)
همانطور که در خط ۱۰ مشاهده می شود. آرگومان های ورودی با فرمول ریاضی یافتن یک جمله در دنباله فیبوناچی مطابقت دارند.
n =Fn-2+Fn-1