PDA

View Full Version : سوال: محدودیت فاکتوریل !!!



Wayne Rooney
یک شنبه 24 آبان 1388, 17:53 عصر
سلام خدمت همگی ، خسته نباشید ،

به نظر من یکی از ساده ترین برنامه هایی که میشه همون اولای کار نوشت برنامه فاکتوریله ... ولی یه مشکلی هست اونم اینه که برنامه ای که من نوشتم در مورد فاکتوریل تا 12 فاکتوریل بیشتر جواب نمیده ! اگه 13 فاکتوریل بنویسم یه عدد چرت جواب میده ...

آیا امکانش هست که محدودیت برداشته بشه ؟؟؟ من از unsigned long هم استفاده کردم ولی بازم محدودیتش جواب نمیده ... راهی هست ؟! حداقل وقتی 13 فاکتوریل می زنیم ارور بده نه اینکه عدد مزخرف بده ! می دونم با if می تونم اینکارو کنم ولی من از اونجایی که برنامه رو اجرا کردم می دونم برا 13 فاکتوریل جواب مسخره میده ...

Salar Ashgi
دوشنبه 25 آبان 1388, 11:37 صبح
در هر زبان برنامه نویسی برای تمام نوع های داده ای ، یک طول حداکثری وجود دارد و برنامه فاکتوریل هم

بالاخره با هر نوع داده ای ازنوع بزرگ (unsigned long int ) تا یک range مشخصی محاسبه خواهد شد .

برای محاسبه فاکتوریل اعداد بزرگ عموما دو روش عمده وجود داره :

1) اگر نتیجه محاسبه زیاد برایتان مهم نیست ، ( بطور تقریبی ) میتوانید از روش تقریب استرلینگ استفاده

کنید .

2)اگر نتیجه محاسبه برایتان مهم است ، باید توسط رشته ها کلاس اعداد بزرگ را تعریف کرده ، اعمال جمع

و ضرب را در آن تعریف کرده (توابع عضو کلاس) و بعد تابع فاکتوریل رو در آن کلاس بعنوان تابع عضوی تعریف کنید

موفق باشید .