پرش به محتوای اصلی
مسیر تخصصی جاوا و Spring
درخواست پروژهتدریس خصوصیارتباط با ماراهنما
جاواپرو v1.2.19یاد بگیر، تمرین کن، حرفه‌ای بساز
خانهدوره‌هاآموزش رایگانوبلاگمدرس‌هاخدمات
خانهالگوریتم Fast Exponentiation در زبان برنامه نویسی جاوا
وبلاگ »

الگوریتم Fast Exponentiation در زبان برنامه نویسی جاوا

بررسی و نحوه ی کارکرد الگوریتم Fast Exponentiation(توان رسانی سریع) و پیاده سازی آن در جاوا

۳ دقیقه مطالعهوبلاگ »آموزش جاوا و انجام پروژه های برنامه نویسی
الگوریتم Fast Exponentiation در زبان برنامه نویسی جاوا
محتوای منتخب جاواپرو

خلاصه مطلب

بررسی و نحوه ی کارکرد الگوریتم Fast Exponentiation(توان رسانی سریع) و پیاده سازی آن در جاوا
نوع محتوامقاله آموزشی
موضوعوبلاگ »
زمان مطالعه۳ دقیقه
آخرین ویرایش۳۰ اردیبهشت ۱۴۰۴
آموزش الگوریتم در زبان برنامه نویسی جاوا
آموزش الگوریتم در زبان برنامه نویسی جاوا

مدرس: مهندس پارسا کاویان پور

لیست دوره های آکادمی جاوا پرو

دوره پرتاب | آموزش پیش نیازهای قبل از شروع برنامه نویسیدوره مقدماتی زبان برنامه نویسی جاوادوره جامع شاهکار پیشرفته جاوادوره جامع طلایی Spring Coreدوره آموزش فریمورک Spring Bootدوره پروژه محور Spring Boot - سیستم دانشگاهدوره جامع دژبان Spring securityدوره جامع نخبگان معماری میکروسرویس با Java و Spring Boot

راهبرد تقسیم و غلبه

راهبرد حل مسئله به روش تقسیم و حل , راهبردی نیست که جدیدا به دنیای الگوریتم ها وارد شده باشد.شاید حتی بیش از دو قرن از آن بگذرد. روشی که ناپلئون, امپراتور فرانسه در نبرد اوسترلیتز در دوم دسامبر 1805 به کاربرد .ارتشی مرکب از سربازان اتریشی و روسی به جنگ با ناپلئون امده بودند که تعداد آن ها به حدود 15000 نفر از افراد ناپلئون بیشتر بود . سپاه اتریشی-روسی حمله ای گسترده علیه فرانسویان آغاز کرد. ناپلئون به قلب سپاه حمله کرد و نیرو ها را به دو بخش تقسیم کرد.از آن رو که هر بخش به تنهایی از پس ارتش ناپلئون بر نمی آمد ,ارتش ناپلئون بر آنها چیره شد.

امروزه این روش را به نام Divide and conquer (تقسیم و حل/ غلبه) میشناسیم. روشی که در آن حل مسئله ی اصلی به زیر مسئله های کوچکتر و راحت تر تقسیم شده و پس از حل زیر مسئله ها ترکیب گشته و مسئله ی اصلی حل میشود.

راهبرد تقسیم و غلبه
راهبرد تقسیم و غلبه

الگوریتم به توان رساندن اعداد

همانطور که میدانیم توان رسانی از دو نماد تشکیل شده. اولی پایه و دیگری نما(توان) . الگوریتم به توان رسانی ساده است. کافی ست که به تعداد توان, پایه را در خود ضرب کنیم:

public static int pow(int base,int exp){ int n=base; for(int i=1;i

زمان اجرای این الگوریتم , زمان نه چندان مطلوب O(n) میباشد.اما با دیدگاه تقسیم و غلبه میتوان این زمان را به O(lgn) کاهش داد.

الگوریتم Fast Exponentiation (توان رسانی سریع)

در پایه ی نهم دبیرستان حاصل ضرب توان ها رو در هم یاد گرفتیم . یکی از حالت ها این بود که پایه ها مساوی و توان ها نامساوی باشه . که در این حالت یکی از پایه ها نوشته میشد و توان ها باهم جمع میشد:

قانون ضرب توان ها
قانون ضرب توان ها

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

قوانین توان رسانی
قوانین توان رسانی

البته این برای حالتی هست که n زوج باشه. اگر فرد بود داریم یه دونه R اضافه داریم که باید ضربش کنیم :

Fast Exponentiation
Fast Exponentiation

مثلا اگر n = 5 باشه و R=3 داریم:

مثال توان رسانی سریع
مثال توان رسانی سریع

حالا که دقیقا فهمیدیم چی میخوایم بریم سراغ کد :

public static int fastExp(int base,int exponential){ if(exponential==0){ return 1; } else if(exponential==1){ return base; } int R = fastExp(base,exponential/2); if(exponential%2==0){ return R*R; } return R*base*R; }

همانطور که در کد مشاهده میکنیم دو حالت زوج و فرد بودن توان رو چک کردیم و بر اساس اون یا R*R گذاشتیم و یا R*R * base.

دو شرط اول هم همان حالات پایه هستند.

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

موفق باشید.

برچسب‌هاوبلاگ »مقالات جاوا »Fast ExponentiationDivide and conquerAlgorithmالگوریتمتوان رسانی سریعتقسیم و غلبهFast Exponentiation در جاوازبان برنامه نویسی جاواجاواآموزش الگوریتمآموزش الگوریتم در جاواتدریس الگوریتم در جاوا
ادامه مسیر

پیشنهاد جاواپرو

موضوع را با آموزش‌های مرتبط ادامه دهید و نکته‌های کاربردی را در مسیر خود نگه دارید

مشاهده دوره‌ها
مطالب پیشنهادی

ادامه مطالعه

xدسته‌بندی نشده
۱۱ دی ۱۳۹۸ مطالعه کوتاه

x

پادکست شماره 3 – راه های کسب درآمد از برنامه نویسی

مطالعه مطلب
پادکست شماره 3 - راه های کسب درآمد از برنامه نویسیپادکست
۲۹ اردیبهشت ۱۴۰۴ مطالعه کوتاه

پادکست شماره 3 - راه های کسب درآمد از برنامه نویسی

در این پادکست برنامه نویسی به شیوه ها و راه های کسب درآمد از برنامه نویسی پرداخته ایم. یک کاغذ و قلم بردارید و به پادکست گوش بدید.

مطالعه مطلب
پادکست شماره 2 - چگونه وارد فضای برنامه نویسی شویم؟پادکست
۲۹ اردیبهشت ۱۴۰۴ مطالعه کوتاه

پادکست شماره 2 - چگونه وارد فضای برنامه نویسی شویم؟

در این پادکست برنامه نویسی یاد میگیریم که چگونه وارد فضای برنامه نویسی شویم و تخصص برنامه نویسی را به دست آوریم.

مطالعه مطلب
جاواپرومرجع تخصصی یادگیری و توسعهٔ جاوا

تجربه‌ای منظم، ساده و حرفه‌ای برای یادگیری عمیق جاوا، Spring و مهندسی نرم‌افزار؛ قابل استفاده در موبایل، تبلت و دسکتاپ

یادگیری

همه دوره‌هاآموزش رایگانمسیر یادگیریمدرس‌ها

جاواپرو

درباره ماخدمات تخصصیدرخواست پروژهتدریس خصوصیبلاگ فنی

پشتیبانی

تماس با ماپرسش‌های متداولقوانین و حریم خصوصیبروزرسانی‌های جاواپروثبت تیکت
خرید امنپرداخت فقط در درگاه رسمیپشتیبانی آموزشیمسیر ارتباط شفاف و پیگیری‌پذیردسترسی پایداروب‌اپ واکنش‌گرا روی همه دستگاه‌ها
© ۱۴۰۵ جاواپرو؛ همه حقوق محفوظ استتوسعه توسط پایاپینگ
خانهدوره‌هاسبد