محاسبه ی توان به شیوهی بازگشتی
یکی از مسألههایی که به کمک الگوریتمهای بازگشتی حل میشود، محاسبهی توان است.شیوههای مختلفی برای پیادهسازی بازگشتی توان وجود دارد.
پیاده سازی الگوریتمها
الگوریتم اول
سادهترین الگوریتم بازگشتی برای محاسبهی توان، آن است که ابتدا $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 است.