جلسه ۵۹: محاسبه مجموع اعداد ۱ تا n به روش بازگشتی در جاوا

در این جلسه، می آموزید که چگونه مجموع عددهای صحیح را از ۱ تا n
با استفاده از شیوه بازگشتی محاسبه کنیم. موارد زیر را بیان خواهیم کرد:
- جمع اعداد صحیح از ۱ تا
n
به چه معناست؟ - علامت گذاری ریاضی عمومی
- پیاده سازی کد
- تفسیر کد
- متد
main
- متد بازگشتی
- حالت پایه
- حالت بازگشتی
- درک از طریق پشته
جمع اعداد صحیح از ۱ تا n
به چه معناست؟
اعداد طبیعی اعداد مثبتی هستند که از ۱ شروع می شوند. این اعداد را می توان به صورت زیر نوشت: … ,۱۰ ,۹ , ۸ ,۷ ,۶ ,۵ , ۴ ,۳ ,۲ ,۱ ما می خواهیم برنامه ای بنویسیم که یک عدد خاص را بگیرد و همه اعداد را از ۱ تا آن عدد جمع کند. تصویر زیر مفهوم را برای کمک به شما در درک این مسئله توضیح می دهد.
مجموع تمام اعداد تا یک عدد خاص برابر است با حاصلجمع آن عدد و مجموع تمام اعداد قبل از آن. این قضیه را به زبان ریاضی به صورت زیر می توان بیان کرد:
= ۵ + \sum_{i=1} ^{4} i
= ۵ + ۴ + \sum_{i=1} ^{3}
= ۵ + ۴ + ۳ + \sum_{i=1} ^{2}
.
.
.
=۵+۴+۳+۲+۱
علامت گذاری ریاضی عمومی
= n + \sum_{i=1} ^{n-1} i
= n + (n-1) + \sum_{i=1} ^{n-2}
.
.
.
= n + (n-1) +(n-2) $ … +۲+۱$
پیاده سازی کد
class SummationClass {
public static int sumAll(int num) {
if (num == 1) {
return num;
}
else {
return num + sumAll(num-1);
}
}
public static void main( String args[] ) {
int input = 5;
int sum = sumAll(input);
System.out.println("The sum of integers from 1 to " + input + " is: " + sum);
}
}
تفسیر کد
در کد بالا ، متد sumAll
یک متد بازگشتی است ، زیرا خود را در بدنه متد فراخوانی می کند. در زیر توضیحات کد بالا آورده شده است:
متد main
- در داخل متد
main
، ما متغیر عدد صحیحinput
را در خط ۱۳ تعریف کرده ایم. کد مجموع تمام اعداد را تا مقدار ذخیره شده درinput
محاسبه می کند. - متد
sumAll
در خط ۱۴ فراخوانی می شود و مقدار بازگشتی آن در یک متغیرint
به نامsum
ذخیره می شود. - پس از فراخوانی متد
sumAll
، دستورSystem.out.println
در خط ۱۵ پاسخ را چاپ می کند.
متد بازگشتی
- نوع بازگشتی این متد
int
است زیرا مجموع تمام اعداد صحیح یک عدد صحیح خواهد بود. - این متد عدد صحیح ،
num
را به عنوان آرگومان ورودی دریافت می کند.
حالت پایه
- حالت پایه متد در خط ۴ تعریف شده است جایی که در صورت برقرار بودن شرایط
num<=1
، متد خاتمه می یابد وnum
را برمی گرداند. این به این دلیل است که اگر عدد ۱ باشد ، هیچ عدد صحیحی کمتر از ۱ وجود ندارد و از این رو مجموع ۱ است. همه اعداد از جمله ۰ یا کوچکتر از ۰ بازگردانده می شوند زیرا آنها اعداد صحیح مثبت نیستند.
حالت بازگشتی
- اگر شرط حالت پایه برقرار نباشد ، متد وارد بلوک
else
می شود که در آن یک فراخوانی بازگشتی انجام می شود. - این فراخوانی بازگشتی با آرگومان
num-1
انجام می شود. مقداربدست آمده از فراخوانیsumAll(num-1)
به آرگمان ورودی ،num
اضافه و نتیجه برگردانده می شود. همانطور که در بالا بحث شد این به این دلیل است که ، مجموع اعداد صحیح تا آن عدد برابر با مجموع آن عدد و حاصلجمع تمام اعداد کوچکتر از آن است.
درک از طریق پشته
اکنون که محاسبه مجموع اعداد صحیح از ۱ تا n
با استفاده از روش بازگشتی را فرا گرفتید ، در جلسه بعدی با استفاده از شیوه بازگشتی یک مسئله ریاضی جالب دیگر یعنی سری فیبوناچی را حل خواهیم کرد.