fxp
שחזור סיסמה הרשמה
  • הודעות
  • אשכולות
  • רשומים
  • מחוברים כרגע
הרשמה לאתר
עמוד 1 מתוך 3 123 אחרוןאחרון
תגיות: אלגוריתם
אלגוריתמיקה|

עזרה אלגוריתם של סדרת פיבונאצ'י

  1. 29-08-2012 18:03 #1
    בן
    תאריך הצטרפות
    14-07-12
    שם פרטי
    Taz
    הודעות
    321
    קדום כל למי שלא יודע סדרת פיבונאצ'י היא סדרה שהסמפר הבא הוא תמיד סכום שני המספרים שלפניו http://he.wikipedia.org/wiki/%D7%A1%...%A6'%D7%99

    התחלתי השנה ללמוד מחשבים ואנחנו לומדים את שפת התכנות C#
    עוד לא למדנו לכתוב בקודים ובשפה והכול... בינתיים צריך לענות על המשימות במילים כאילו קוד....

    אז המשימה היא ככה:
    כתבו אלגוריתם המקבל מספר N (כל מספר) והאלגוריתם כותב את N האיברים הראשונים בסדרת פיבונאצ'י

    הכוונה נגיד האלגוריתם קיבל תמספר 5 אז הוא צריך לעשות סדרה של חמשת המספרים הראשונים בסדרת פיבונאצ'י - 1,1,2,3,5

    בינתיים חשבתי שלאחר שהוא מקבל תמספר הוא כאילו עושה X+ (x+1)z תתעלמו מה-Z זה כדי שלא יהיה באג סוגריים

    אבל צריך לדעת איזה מספר הוא יקבל וכמה כאלה לעשות כי הרי הסדרה אינסופית והוא יכול לקבל תמספר 983247928374629834
    צריך למצוא כלל שיעבוד על כל מספר...

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

    טוב די חפרתי תודה רבה לעוזרים


  2. 29-08-2012 18:13 #2
    בן
    תאריך הצטרפות
    03-12-10
    הודעות
    12,671
    תחזיק כל הזמן 3 משתנים שיחזיקו את האיבר הקודם קודם, האיבר הקודם, והאיבר כרגע, תעדכן ותדפיס אותם לפי מה שצריך

    יש גם פתרון רקורסיבי אבל בגלל ההדפסות הוא פחות קלאסי ויפה מרקורסייה של פיבונאצ'י
    נערך לאחרונה על ידי General Spaghetti, 29-08-2012 בשעה 18:14

  3. 29-08-2012 18:18 #3
    בן
    תאריך הצטרפות
    14-07-12
    שם פרטי
    Taz
    הודעות
    321
    ציטוט פורסם במקור על ידי FlyingSpaghetti צפה בהודעה
    תחזיק כל הזמן 3 משתנים שיחזיקו את האיבר הקודם קודם, האיבר הקודם, והאיבר כרגע, תעדכן ותדפיס אותם לפי מה שצריך

    יש גם פתרון רקורסיבי אבל בגלל ההדפסות הוא פחות קלאסי ויפה מרקורסייה של פיבונאצ'י
    קדום כל תודה
    שמתי לב שאתה די הרבה מבין במתמטיקה
    צר לי לבשר לי שאני לא
    אני בכיתה י' 4 יחידות מתמטיקה חחחחחחחחח
    אין לי מושג מה אמרת
    תוכל פשוט לתת לי תשובה אבל כמובן בדרך נוסחא מתמטית פשוט לא בקוד ותסביר את פעולותך?
    נגיד מבקשים אלגוריתם שמזהה האם המספר עשרוני או לא אז הוא מבקש שנרשום לו למשל
    בדוק אם המספר הוא1 או 2 אם כן הוא עשרוני אם לא המשך לשלב הבא
    תעשה שורש למספר שהתקבל לאלגוריתם ואז אפשר לדעת אם הוא עשרוני..


  4. 29-08-2012 18:26 #4
    בן
    תאריך הצטרפות
    03-12-10
    הודעות
    12,671
    ציטוט פורסם במקור על ידי TazrimuT צפה בהודעה
    קדום כל תודה
    שמתי לב שאתה די הרבה מבין במתמטיקה
    צר לי לבשר לי שאני לא
    אני בכיתה י' 4 יחידות מתמטיקה חחחחחחחחח
    אין לי מושג מה אמרת
    תוכל פשוט לתת לי תשובה אבל כמובן בדרך נוסחא מתמטית פשוט לא בקוד ותסביר את פעולותך?
    נגיד מבקשים אלגוריתם שמזהה האם המספר עשרוני או לא אז הוא מבקש שנרשום לו למשל
    בדוק אם המספר הוא1 או 2 אם כן הוא עשרוני אם לא המשך לשלב הבא
    תעשה שורש למספר שהתקבל לאלגוריתם ואז אפשר לדעת אם הוא עשרוני..
    קוד:
    print_fib(x)
    a = 0
    b = 1
    for i = 1 to i = n
    current = a + b
    print current
    a = b
    b = current
    משהו בסגנון הזה. סביר להניח שיש טעות קטנה אבל זה העקרון

  5. 29-08-2012 18:35 #5
    בן
    תאריך הצטרפות
    29-09-11
    הודעות
    8,160
    יש נוסחה למציאת הסדרה
    כל עוד לא הגעת למספר המבוקש שקלטת(N) תמשיך לעשות את הנוסחה ותדפיס את המספרים
    I had a hole in my second favorite drinking arm

  6. 29-08-2012 18:39 #6
    בן
    תאריך הצטרפות
    11-01-09
    הודעות
    6,895
    ציטוט פורסם במקור על ידי FlyingSpaghetti צפה בהודעה
    קוד:
    print_fib(x)
    a = 0
    b = 1
    for i = 1 to i = n
    current = a + b
    print current
    a = b
    b = current
    משהו בסגנון הזה. סביר להניח שיש טעות קטנה אבל זה העקרון
    אפשר לעשות את זה:
    קוד:
    a = 1
    b = 1
    for i = 1 to n
    print b
    a += b
    b = a - b

  7. 29-08-2012 18:40 #7
    בן
    תאריך הצטרפות
    05-06-12
    שם פרטי
    Jack
    הודעות
    1,129
    ציטוט פורסם במקור על ידי MedaIs צפה בהודעה
    יש נוסחה למציאת הסדרה
    כל עוד לא הגעת למספר המבוקש שקלטת(N) תמשיך לעשות את הנוסחה ותדפיס את המספרים
    הרבה יותר מסובך.
    וגם פחות יעיל (אפילו במונחים של סיבוכיות זמן ריצה).

  8. 29-08-2012 18:41 #8
    בן
    תאריך הצטרפות
    29-09-11
    הודעות
    8,160
    ציטוט פורסם במקור על ידי AgentBauer צפה בהודעה
    הרבה יותר מסובך.
    וגם פחות יעיל (אפילו במונחים של סיבוכיות זמן ריצה).
    אז איך אתה מציע לעשות את זה
    I had a hole in my second favorite drinking arm

  9. 29-08-2012 18:44 #9
    בן
    תאריך הצטרפות
    05-06-12
    שם פרטי
    Jack
    הודעות
    1,129
    ציטוט פורסם במקור על ידי MedaIs צפה בהודעה
    אז איך אתה מציע לעשות את זה
    לפי ההגדרה של מספרי פיבונאצ'י - בהינתן 2 המספרים הקודמים, המספר הבא הוא סכומם.

  10. 29-08-2012 18:45 #10
    בן
    תאריך הצטרפות
    29-09-11
    הודעות
    8,160
    ציטוט פורסם במקור על ידי AgentBauer צפה בהודעה
    לפי ההגדרה של מספרי פיבונאצ'י - בהינתן 2 המספרים הקודמים, המספר הבא הוא סכומם.
    \מה?
    הקלט הוא מספר N
    אתה צריך להגיע לאיבר N בפיבונצי
    אתה מדבר על דרך רקורסיבית?
    I had a hole in my second favorite drinking arm

  11. 29-08-2012 18:48 #11
    בן
    תאריך הצטרפות
    05-06-12
    שם פרטי
    Jack
    הודעות
    1,129
    ציטוט פורסם במקור על ידי MedaIs צפה בהודעה
    \מה?
    הקלט הוא מספר N
    אתה צריך להגיע לאיבר N בפיבונצי
    אתה מדבר על דרך רקורסיבית?
    איך הגעת לזה שאני מתכוון לדרך רקורסיבית?
    לא צריך להציג את המספר ה-N, אלא להציג את כל N האיברים הראשונים.
    ועושים את זה פשוט לפי ההגדרה של מספרי פיבונאצ'י, כמו שכתבו פה קוד מעליי.

  12. 29-08-2012 18:58 #12
    בן
    תאריך הצטרפות
    12-02-10
    הודעות
    6,109
    למה להסתבך?
    קוד PHP:
    int arr[10];
    for(
    int i=0i<10i++)
    {
        if(
    i==0)           arr[i] = 1;
        else if(
    i==1)      arr[i] = arr[i-1];
        else               
    arr[i] = arr[i-1]+arr[i-2];

    נערך לאחרונה על ידי ilikeme, 29-08-2012 בשעה 18:59

  13. 29-08-2012 19:03 #13
    בן
    תאריך הצטרפות
    11-01-09
    הודעות
    6,895
    ציטוט פורסם במקור על ידי ilikeme צפה בהודעה
    למה להסתבך?
    קוד PHP:
    int arr[10];
    for(
    int i=0i<10i++)
    {
        if(
    i==0)           arr[i] = 1;
        else if(
    i==1)      arr[i] = arr[i-1];
        else               
    arr[i] = arr[i-1]+arr[i-2];

    אתה הסתבכת...

  14. 29-08-2012 19:03 #14
    בן
    תאריך הצטרפות
    12-02-10
    הודעות
    6,109
    ציטוט פורסם במקור על ידי YASHAX צפה בהודעה
    אתה הסתבכת...
    הרצתי את הקוד
    עובד לי

  15. 29-08-2012 19:04 #15
    בן
    תאריך הצטרפות
    02-10-08
    שם פרטי
    עידן
    הודעות
    4,605
    זה שהוא עובד לא אומר שהוא פחות מסובך .


    .If one day the speed kills me, do not cry because I was smiling
    -
    Paul Walker

עמוד 1 מתוך 3 123 אחרוןאחרון
מקרא דרגות:  » יו"ר » מנכ"ל » מנהל ראשי » מפקח » מנהל פורום » צוות פרוייקטים » צוות סיקורים » משתמש כבוד » היכל התהילה » Champ » משקיען כבוד » Winner