PDA

View Full Version : سوال: تقسیم شدن توابع بازگشتی



javad_babaey
سه شنبه 05 اردیبهشت 1391, 15:36 عصر
سلام دوستان
چطور وقتی یه برنامه میاد آرایه رو به زیر مسئله تقسیم میکنه (با تقسیم بر 2) مثلا وقتی آرایه ی با اندازه ی 7
بهش میدم چرا برای اولین بار که آرایه رو به 2 تقسیم میکنه و به 3.5 میرسه به مشکل بر نمیخوره ؟مثلا نمیاد اول به 7بعد به 3.5و....؟
مثل این تابع
void maxmin(int i, int j)
{
int max1, min1, mid;
if(i==j)
{
max = min = a[i];
}
else
{
if(i == j-1)
{
if(a[i] <a[j])
{
max = a[j];
min = a[i];
}
else
{
max = a[i];
min = a[j];
}
}
else
{
mid = (i+j)/2;
maxmin(i, mid);
max1 = max; min1 = min;
maxmin(mid+1, j);
if(max <max1)
max = max1;
if(min > min1)
min = min1;
}
}
}

ASGGSA
سه شنبه 05 اردیبهشت 1391, 18:48 عصر
سلام.
به خاطر اینکه متغیرات را int (از نوع صحیح) تعریف کرده اید به همین خاطر وقتی 7 را تقسیم بر 2می کنید فقط مقدارصحیح نتیجه در متغیرتان ذخیره می شود یعنی از
3.5 فقط 3 ذخیره می شود برای همین هستش که خطا پیش نمی آید.