آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

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

hosseinAmini  12 سال پیش  12 سال پیش
0 0

سلام استاد خسته نباشید.
در مثال فاکتوریل چرا وقتی یک عدد بزرگ وارد می کنیم خروجی صفر نمایش داده می شود؟(مثلا عدد 100)
در مثال فیبونوچی هم جواب غلط نشون میده.(مثلا 1500 رو وارد می کنیم)

 برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال 
uncocoder  12 سال پیش
0 0

شما شمارنده ( Counter ) ضبط را تصور کنید. بعد از عدد 99 عدد 00 هست. یعنی شماره به انتها میرسه. در متغیرها هم همینطور هست. وقتی که عدد از ماکزیمم خود تجاوز می کند، بسته به زبان برنامه نویسی یا به مینیمم برمی گردد یا خطا گزارش می شود. علت این امر جمع باینری است. فرض کنید byte که یک عدد 8 بینی است دارای ارقام 11111111 باشد که نمایشگر 255 دسیمال است. حالا اگر یکی به این عدد اضافه شود یعنی قرار باشد 256 را ببینیم، حاصل جمع باینری خواهد شد 0000000 1 از آنجایی 8 بیت در این حافظه بیشتر وجود ندارد، بیت پرارزشتر یک 1 شده ذخیره نمی شود و عدد 0 خواهد شد. یعنی جمع 255 با 1 می شود 0.

راه حل این هست که اعداد از جنس بزرگتری باشند، مثلاً اگر float هستند به double تبدیل بشن، یا اگر int هستند به long تبدیل بشن.


پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .