אני פתרתי את השאלה. להלן האלגוריתם
מה שעשיתי, הוא ליצור שני איטרטורים ברקורסיה, האחד מייצג את האיבר הנוכחי במערך, שאני בודק צירופים עבורו, והשני מייצג את המספרים שאחריו. כלומר, הוא רץ על המערך. בנוסף, העברתי כפרמטרים את הסכום (שאתחלתי לאיבר הראשון במערך ב-Pre Conditions) ואת המספר שצריך להגיע אליו, וכמובן המערך. היו לי שני שלושה תנאי סיום: 1. אם האיטרטור שמייצג את האיבר הנוכחי גדול מהמערך, סימן שלא מצאתי צירוף מספרים ששווה למספר, ואז אני מחזיר 0. 2. השני הוא כמובן, אם הסכום שווה למספר, ואז אני מחזיר 0. דרך אגב, יכול להיות גם שהאיבר עצמו, ללא צירוף נוסף יהיה שווה למספר. 3. אם האיטרטור שרץ על כל איברי המערך גדול מהמערך, אני בודק את צירוף המספרים עבור האיבר הבא. כלומר, אני קורא לפונקציה רקורסיבית עם קידום של האיבר הנוכחי ב-1, וקידום של האיטרטור שרץ על איברי המערך באיבר הנוכחי + 2 (1 אחרי האיבר הבא). הסיבה שקידמתי גם אותו, היא שממילא אני בדקתי את כל הצירופים עבור האיבר הבא עם המספרים שלפניו, ולכן אין טעם לבדוק את זה. 3. במקרה שלא נעצרתי, אני בודק האם הסכום + האיבר הבא קטן מהמספר שהעברתי כפרמטר. אם כן, אני מעביר כפרמטר, את הסכום + האיבר הבא, ומקדם את האיטרטור שרץ על המערך ב-1. 4. אם הסכום + האיבר הבא גדול מהמספר שהעברתי כפרמטר, אני קורא לפונקציה עם אותם פרמטרים, מלבד האיטרטור של המערך, שאני מעלה ב-1. 5. אם הסכום שווה למספר, אני מחזיר את אותם פרמטרים, ואז נעצר באיבר שבהתחלה, כי הסכום שווה למספר. הערה: יכולתי לחסוך בזמן ריצה, אם הייתי קובע תנאי, שאם האיבר הנוכחי (שהאיטרטור הנוכחי מצביע עליו) גדול מהסכום יש לעבור לאיבר הבא. מקווה שהבנת, אמיר.