Java רקורסיות

benda2109

New member
Java רקורסיות

שלום, יש לי אלגוריתם שמקבל מחרוזת ומחזיר את כל תתי הקבוצות שלה בגודל K אני מנסה לשנות אותו איכשהו שיחיזר לי את כל תתי הקבוצות בגדול גדול מK. ולשנות אותו פעם נוספת שיחזיר את כל הקטנים שווים לאורךK.
static void p( int n, int k){p(n,k,"");} public static void p(String s, int k, String andAlso){ // print all subsets of s of size k if (s.length() == k) System.out.println (andAlso+s); else if ( k==0 ) System.out.println(andAlso); else { p(s.substring(1), k, andAlso); p(s.substring(1), k-1, andAlso+s.charAt(0)); } }​
אבל לא מצליח.... למישהו יש רעיון?
 

freak2100

New member
הפונקציה צריכה להיות די שונה

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