-
دوشنبه 20 اسفند 1386, 23:39 عصر
#11
کاربر دائمی
int power( int ,int );
void main(){
clrscr();
int x = power(2, 5);
cout<<x;
getch();
}
int power(int m, int n){
if(n > 0 )
return m*power(m,n-1);
return 1;
}
این کد تقسیم و غلبه هست، (شرط Small داره و مسئله رو به 1 و n-1 زیر مسئله می شکنه ) . اما باید توجه کنی که آنالیز الگوریتم شما اینه :
T(n) = T(n-1) + 1 , T(1) = 1 ; => T(n) = n
این تابع هم همین کار رو می کنه و از زمان n هست :
int pow(int m,int n)
{
int i,sum;
sum = 1;
for(i=0;i<n;i++)
{ sum *= m; }
return sum;
}
باید توجه کرد که فراخوانی بازگشتی برای سیستم سربار داره و اینکه ما بیایم یه الگوریتم رو بدون اینکه زمانشو بهبود ببخشیم از روش تقسیم و غلبه با کد بازگشتی حل کنیم فایده ای نداره.
در ضمن. یه کم با هم مهربونتر باشیییییییین!
برچسب های این تاپیک
قوانین ایجاد تاپیک در تالار
- شما نمی توانید تاپیک جدید ایجاد کنید
- شما نمی توانید به تاپیک ها پاسخ دهید
- شما نمی توانید ضمیمه ارسال کنید
- شما نمی توانید پاسخ هایتان را ویرایش کنید
-
قوانین سایت