פורסם 2004 בנובמבר 1321 שנים אוקיי יש לי שאלה ששברתי עליה את הראש ולא הצלחתי! ???צריך לבנות פרוצדורה רקורסיבית שתקבל מספר שלם N, ותדפיס את כל המחלקים שלו. מישהו יכול לעזור? עדיף בפסקל כי אני לא יודע כל כך טוב C... אבל אם אין ברירה אז ב C.. :-\
פורסם 2004 בנובמבר 1321 שנים אתה רוצה את כל המחולקים הראשוניים שלו (פרוק לגורמים) או את כל המחולקים שלולדוגמא עבור 24 אתה רוצה לקבל2 2 2 3או1 2 3 4 6 8 12 24?
פורסם 2004 בנובמבר 1421 שנים מחבר אתה רוצה את כל המחולקים הראשוניים שלו (פרוק לגורמים) או את כל המחולקים שלולדוגמא עבור 24 אתה רוצה לקבל2 2 2 3או1 2 3 4 6 8 12 24?אני צריך את כל המחלקים שלו. (את האפשרות השנייה שהבאת):1 2 3 4 6 8 12 24
פורסם 2004 בנובמבר 1421 שנים אז רקוריסה ממש מיותרת פהמה שאתה יכול לעשות זה לכתוב פונקציה שתקבל 2 פרמטרים - המספר שאתה מחפש ומונהבהתחלה תקרא לה עם מונה = 1 וכל קריאה רקורסיבית תגדיל את המונה ב-1 עד שתגיע למספרבכל קריאה תבדוק אם המספר מתחלק במונה ותדפיס בהתאםזה לא ממש קשה
פורסם 2004 בנובמבר 1421 שנים נכון, זו הדרך הכי פשוטה אבל...אתה לא עונה לשאלתו. ייתכן וזה שעורי בית על רקורסיה והוא צריך לעשות את זה ברקורסיה בכדי לתרגל את זה.יש לי משהו, אני בודק אם זה עובד. אני לא זוכר כל כך את הסינטקס של פסקל אבל אני ארשום כמה שיותר קרוב לזה.אתה כבר תבין מה עשיתי שם.*** עריכה ***קבללפרוצדורה אתה קורא ע"יBla(N,1)1 הוא המחלק הראשון של הפרוצדורה.ניתן להשתמש במשתנה גלובלי על מנת לבטל את קבלת המחלק אבל זה לא כל כך מומלץ מטעמי נוחות מעקב וסדר בקוד התוכנה.Procedure Bla (N:integer;I:integer) var strDividers:String*256 begin if (N mod I)=0 and (N>=I) then begin strDividers = strDividers & I I = I + 1 Bla N, I End Elseif (N mod I)<>0 and (N>=I) then Begin I = I + 1 Bla N, I End End ifWriteln strDividersEndEnd Procedure
פורסם 2004 בנובמבר 1421 שנים הפתרון שלי:זימון הפרוצדורה גם כן מתבצע ע"י:Bla(N,1)הפרוצדורה:procedure bla (n,x: integer);begin if (n mod x)=0 then writeln (x); if x<=(n div 2) then bla (n,x+1) else writeln (n);end;
פורסם 2004 בנובמבר 1521 שנים מצויין, זה גם עובד. מסקנה צביקה: עם קצת רצון וגם יכולת גם עני יקנה DVD במכולת .
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.