mhfarzin
جمعه 07 شهریور 1393, 23:22 عصر
سلام خدمت همه دوستان
همانطور که میدونید حل بعضی از مسائل به کمک توابع بازگشتی خیلی راحت تره.
امروز با یکی از این مسائل برخورد داشتم. ولی مشکلی که وجود داره حداکثر تعداد بازگشت ها در دان نت گویا محدود است. مثلا کد ساده زیر رو در نظر بگیرید.
using System;
namespace Test
{
class Program
{
static void Main(string[] args)
{
recursive(0);
}
static void recursive(long Number)
{
Console.WriteLine(Number.ToString());
recursive(++Number);
}
}
}
این کد تو کامپیوتر من تا عدد 12189 رو چاپ میکنه و بعدش پیام StackOverflowException میده.
تو یه سایتی میخوندم دات نت فضای کمی برای استکش در نظر میگیره و این جور مواقع باید از Thread استفاده کنی و میتونی به عنوان دومین آرگومنتش میزان استک رو بدی. ولی اون هم باز محدودیت داره. یعنی عددی که به عنوان سایز استکش میگیره رو اگر زیاد وارد کنی همون شروع برنامه پیام StackOverflowException رو میده.
حالا برای مثال من یه تابع دارم که نیازه صد هزار بار خودش رو فراخوانی کنه تا به برگ برسه و تازه تو هر بار اجرا، خودش رو با چندین مقدار متفاوت فراخوانی میکنه(الگوریتم های بازگشت به عقب و شاخه و حد). راه حل این مشکل چیه؟
همانطور که میدونید حل بعضی از مسائل به کمک توابع بازگشتی خیلی راحت تره.
امروز با یکی از این مسائل برخورد داشتم. ولی مشکلی که وجود داره حداکثر تعداد بازگشت ها در دان نت گویا محدود است. مثلا کد ساده زیر رو در نظر بگیرید.
using System;
namespace Test
{
class Program
{
static void Main(string[] args)
{
recursive(0);
}
static void recursive(long Number)
{
Console.WriteLine(Number.ToString());
recursive(++Number);
}
}
}
این کد تو کامپیوتر من تا عدد 12189 رو چاپ میکنه و بعدش پیام StackOverflowException میده.
تو یه سایتی میخوندم دات نت فضای کمی برای استکش در نظر میگیره و این جور مواقع باید از Thread استفاده کنی و میتونی به عنوان دومین آرگومنتش میزان استک رو بدی. ولی اون هم باز محدودیت داره. یعنی عددی که به عنوان سایز استکش میگیره رو اگر زیاد وارد کنی همون شروع برنامه پیام StackOverflowException رو میده.
حالا برای مثال من یه تابع دارم که نیازه صد هزار بار خودش رو فراخوانی کنه تا به برگ برسه و تازه تو هر بار اجرا، خودش رو با چندین مقدار متفاوت فراخوانی میکنه(الگوریتم های بازگشت به عقب و شاخه و حد). راه حل این مشکل چیه؟