רשום עם סוגריים רגילות כי יש בעיה עם מרובעות bool subsetSum(int* numbers, int size, int sum) { if (size==0) return false; if (sum==numbers(size-1)) return true; return subsetSum(numbers, size-1, sum-numbers(size-1)) || subsetSum(numbers, size-1, sum); }
|
תנאי עצירה, מערך בגודל 0, מחזירים שקר
אחרת אם האיבר האחרון במערך הוא SUM מצאנו,
אם SUM הוא לא האחרון במערך אז נבדוק על מערך בלי האיבר האחרון:
אם יש בו את SUM פחות האיבר האחרון, סימן שמצאנו כי נוסיף את האיבר האחרון ונקבל את SUM
אבל יכול להיות שהאיבר האחרון מפריע לסכום אז נחשב גם על מערך קטן יותר בלעדיו
ובסוף נעשה "או" ביניהם כי אם אחד הצליח זה מספיק..
