נשלח בתאריך: 05 May 2011 בשעה 22:44 | | IP רשוּם
|
|
|
|
כתבתי פונקציה שמקבלת מספר (double) ומספר נוסף (גם double) שלהלן ייקרא: דיוק.
הפונקציה מחזירה את השורש הריבועי של המספר הראשון בדיוק שנשלח.
החישוב נעשה ע"י שימוש בשיטת החיפוש הבינארי בצורה הבאה:
בכל קריאה רקורסיבית של הפונקציה היא שואלת האם ה-middle (של החיפוש הבינארי) בריבוע נמצא בתחום של: המספר המקורי פחות הדיוק והמספר המקורי פלוס הדיוק.
כאשר החיפוש מתחיל בתחום שבין המספר המקורי לבין המספר 1.
הפונקציה עובדת כמו שצריך אבל מחזירה תשובה מטיפוס double שלעתים קרובות הוא טיפה קטן או גדול יותר מהתשובה הרצויה. לדוגמא עבור המספר 4 תתקבל, עבור דיוק מסויים, התשובה: 1.9.
השאלה שלי היא איך אני מעגל את התשובה כך שתמיד תצא נכונה (לא חייב שהיא תצא בדיוק 2 לצורך העניין, אבל מספיק שיהיה 2 נקודה משהו כך שכשתוחזר התשובה כ-int היא תהיה 2..)
נ.ב: ניסיתי להוסיף לתשובה הסופית את הדיוק אבל זה לא תמיד יוצא נכון, מטבע הדברים..
תודה..
|