PDA

View Full Version : علت خطا درتوابع بازگشتی



sama1385
یک شنبه 25 مهر 1389, 11:37 صبح
با سلام
چرا در توابع بازگشتی در پاسکال بدون else خطای stack overflow می دهد؟

xxxxx_xxxxx
یک شنبه 25 مهر 1389, 20:20 عصر
سلام،
در توابع بازگشتی حتماً باید یک نقطه برای خاتمه درنظر گرفت. این else ی هم که میگید احتمالاً به خاطر همین هست.

حالا شما الگوریتمتون به چه شکل هست؟ اگر میتونید دستورات رو اینجا بنویسید.

tooraj_azizi_1035
دوشنبه 26 مهر 1389, 10:01 صبح
سلام،
به این دلیل که هر بار که تابع بازگشتی خودش رو صدا می زنه وضعیت جاری خودش رو تو Stack ذخیره می کنه. اگه تعداد فراخوانی ها به حدی برسه که Stack دیگه جایی برای ذخیره وضعیت فعلی تابع رو نداشته باشه Stack Overflow رخ می ده. برای اجتناب از چنین وضعیتی برنامه رو برای پارامترهایی که باعث می شن تابع مثلاً 3 بار خودش رو صدا می زنه تست کن تا مطمئن شی تابع شما مشکلی نداره. :لبخندساده: