עבור לתוכן

מתודה רקורסיבית של Hash code

Featured Replies

פורסם

איך כותבים בצורה יעילה מתודה רקורסיבית המקבלת מחרוזת ומחזירה מספר המייצג את ה-hashCode:

מספר ה-hashCode יתקבל מסכום של כל מספרי ה- ASCII של המחרוזת,

לאחר שכול תו מייצג מספר ASCII מסוים.

לדוגמה המחרוזת " RED" עם המתודה תחזיר את המספר:  R)82+(e)101+(d)100 = 219)

תודה 🙂

 

זה הקוד שכתבתי שלא עובד /:

public int hashCode(String value) {

    final int prime = 31;
    int result = 1;
    result = prime * result + x;
    result = prime * result + y;

    if(s.length() == 0){
        exit(0);
    }
    for(int i = 0; i < s.size(); i++) 
    {
        sum += s[i];
    }
    return sum;

 

פורסם

אתה צריך לעשות את זה רקורסיבית, אז תחשוב רקורסיה.

בבעיות רקורסיה מהסוג הזה הפעולה כל הזמן צריכה לקרוא לעצמה עד שהיא מגיעה לתנאי עצירה, בכל שלב היא משנה את הargument המתקבל ואת הגרסה המעודכנת שולחת לעצמה מחדש.

איפה בקוד שלך החלק שקורה לפעולה מתוך הפעולה?

 

אני ממליץ לך להתחיל מחדש, קודם כל לחשוב איך אתה הולך לבצע את המשימה לפני שאתה בכלל ניגש לרשום קוד (רמז: הargument של הפעולה שלך הוא המחרוזת, אז בכל שליחה תוריד תו מהמחרוזת הזו ).

אחרי שכבר תכתוב ותצליח, תחזור להסתכל על הקוד שרשמת פה וללמוד מטעויות

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים