======محاسبه ی توان به شیوهی بازگشتی======
یکی از مسألههایی که به کمک الگوریتمهای بازگشتی حل میشود، محاسبهی توان است.شیوههای مختلفی برای پیادهسازی بازگشتی توان وجود دارد.
=====پیاده سازی الگوریتمها=====
-الگوریتم اول
-سادهترین الگوریتم بازگشتی برای محاسبهی توان، آن است که ابتدا $a^n/a$ را به صورت بازگشتی بهدست آوریم و سپس آن را در a ضرب کنیم تا مقدار $a^n$ بهدست آید. \\
-پیاده سازی این الگوریتم در زیر آمده است : (مشخص است که زمان اجرای این الگوریتم (O(n است.) \\ \\
-
int power(double a, int n) {
if (n == 0)
return 1;
return power(a,n-1)*a;
}
-الگوریتم دوم
- ایدهی الگوریتم دوم آن است که، برای محاسبه $k\times2)$)^2 نیازی نیست که همهی توانهای کوچکتر از 2k را حساب کنیم. میتوان ابتدا $2^k$ را محاسبه کرد و سپس آن را به توان 2 رساند.
- پیادهسازی این الگوریتم :
int power (double a, int n) {
if (n == 0)
return 1;
if (n % 2 == 0)
return pow (power(a,n/2),2);
else
return a*pow (power(a,n/2),2);
در هر مرحله از بازگشت، مقدار توان نصف میشود و بنابراین زمان کل اجرای الگوریتم، ((O(log(n است.