פורסם 2014 בינואר 2611 שנים נתון מערך דו-ממדי m המכיל מספרים שלמים אי- שלילייםנגדיר מסלול במערך כאוסף של תאים שכנים במערך הדו-ממדי, (שכנים ממש, לא כולל אלכסון),המתחיל בתא השמאלי- עליון של המערך ( (row=0, col=0ומסתיים בתא הימני-תחתון של המערך ( (row=m.length-1, col = m[0].lengthעלות המסלול היא סכום הערכים בתאים אשר מרכיבים אותו.כתבו שיטה סטטית רקורסיבית המקבלת מערך דו-ממדי המלא במספרים שלמים אי- שלילייםומדפיסה את עלויות כל המסלולים שבמערך.זה מה שכתבתי: public static void printPathWeights(int[][] m) { printPathWeights(m, 0, 0, 0); } public static void printPathWeights(int[][] m, int row, int col, int sum) { if(row == 0 && col ==0) sum = 0; if (row == m.length - 1 && col == m[row].length - 1) System.out.println(sum); else { if (row >= 0 && row < m.length && col >= 0 && col < m[row].length) printPathWeights(m, row + 1, col, sum += m[row][col]); // Down if (row >= 0 && row < m.length && col >= 0 && col < m[row].length) printPathWeights(m, row, col - 1, sum += m[row][col]); // Left if (row >= 0 && row < m.length && col >= 0 && col < m[row].length) printPathWeights(m, row, col + 1, sum += m[row][col]); // Right } }הבעיה היא שזה נכנס לי ללופ אינסופי ולא מדפיס כלום
פורסם 2014 בינואר 2611 שנים אז תיצור לך מערך קטן לדוגמה ותדבג את הפונקציה.חוץ מזה תלמד מה המשמעות של =+. נערך 2014 בינואר 2611 שנים על-ידי שניצל
פורסם 2014 בינואר 2611 שנים ממליץ לך בחום להשתמש בסוגרים בכמות גדולה יותר לדוגמא: if ((row == m.length - 1) && (col == m[row].length - 1)) דבר שני, מי אמר שבתא 0 0 יש אפס? דבר שלישי, אתה הולך ימינה ואז אתה הולך שמאלה ואז ימינה תחזור על זה אינסוף פעמים קיצור תלך ימינה או למטה וככה לא תיכנס ללופ אין סופי, בהצלחה!
פורסם 2014 בינואר 2711 שנים מחבר הורדתי את ה-up ואת ה-left וזה מדפיס אבל שמתי לב שזה מפספס תשובות למשל אם אני הולך רק ימינה עד הסוף ואז רק למטה עד הסוף זה יוצא 38 וזה לא מופיע לי באחת מהתשובותזה המערך שלי: int [][] matrix = { {8,4,2,4,3}, {6,3,8,4,5}, {1,4,9,9,7}, {2,1,7,6,5} }; נערך 2014 בינואר 2711 שנים על-ידי falukky
פורסם 2014 בינואר 2711 שנים תכתוב את הקוד החדש שיהיה אפשר לראות, בכל מקרה זאת אמורה להיות התשובה האחרונה לפי הקוד הישן.תספור כמה תשובות יוצאות לך לראות אם אתה מפספס או מחשב לא נכון וכמובן תעשה דוגמא של מערכים קטנים לראות את הבעיות.
פורסם 2014 בינואר 2711 שנים מחבר זה הקוד הרלונטי: public static void printPathWeights(int[][] m, int row, int col, int sum) { if(row == 0 && col == 0) sum = 0; if (row == m.length - 1 && col == m[row].length - 1) System.out.println(sum); else { if (row >= 0 && row < m.length && col >= 0 && col < m[row].length) printPathWeights(m, row + 1, col, sum += m[row][col]); // Down if (row >= 0 && row < m.length && col >= 0 && col < m[row].length) printPathWeights(m, row, col + 1, sum += m[row][col]); // Right } }
פורסם 2014 בינואר 2711 שנים תנסה לתקן את זה ולבדוק את זה במקרים פשוטים:if (row == m.length - 1 && col == m[row].length - 1) System.out.println(sum + m[row][col]); נערך 2014 בינואר 2711 שנים על-ידי Ligi
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.