ABA


"סדרת פיבונאצ'י ברקורסיה : (צריך הסבר לדרך)"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #13676 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 13676
Grass-Boyy
חבר מתאריך 9.6.03
3603 הודעות
   16:23   04.11.06   
אל הפורום  
  סדרת פיבונאצ'י ברקורסיה : (צריך הסבר לדרך)  
 
  

זהו האלגוריתם:

אשמח אם תסבירו לי יותר לעומק את צורת החשיבה של רקורסיה
תודה רבה


#include <conio.h>
#include <stdio.h>

long fib (int n)
{
if ((n == 0) || (n ==1))
return 1;
else
return (fib (n-1) + fib (n-2));
}

void main()
{
int n = 0;
for ( ; n <= 20; n++)
printf ("Fibunachi (%d): %ld\n\r", n, fib(n));
}



                                שתף        
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

  האשכול     מחבר     תאריך כתיבה     מספר  
  עוד שאלה: Grass-Boyy 04.11.06 17:39 1
     הרעיון בכלליות הוא לפרק את המס' המקורי (שאותו אתה שולח Nesher  04.11.06 18:21 3
  אז ככה... סדרת פיבונצ'י מורכבת מסכום 2 הספרות הקודמות Nesher  04.11.06 18:17 2
     מה הN מציין ? Grass-Boyy 04.11.06 20:06 4
         וגם השורה הבאה לא מובנת לי כל כך בקלות: Grass-Boyy 04.11.06 20:22 5
             תעשה טבלת מעקב... תמצא את התשובה מה זה N ומה הערך החזר Nesher  04.11.06 20:31 6
                 ניסיתי לעשות טבלה ולא הבנתי בכל זאת Grass-Boyy 04.11.06 23:02 7
                     בוקר טוב, הכנתי לך תרשים זרימה Limp Bizkit 05.11.06 08:38 8
                         אבל גם בFIB)0( זה אמור להחזיר 1 לא? MULI 05.11.06 11:13 9
                             היי Limp Bizkit 05.11.06 15:53 10

       
Grass-Boyy
חבר מתאריך 9.6.03
3603 הודעות
   17:39   04.11.06   
אל הפורום  
  1. עוד שאלה:  
בתגובה להודעה מספר 0
 
  

אני צריך לבנות פונקציה רקורסיבית שמקבלת מספר שלם ומחזירה את סכום ספרותיו עד למספר הקטן ביותר.
לדוגמא: 6=1+5=15=7+8=78

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

תודה


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Nesher  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 2.7.02
2 הודעות, 24 פידבק
   18:21   04.11.06   
אל הפורום  
  3. הרעיון בכלליות הוא לפרק את המס' המקורי (שאותו אתה שולח  
בתגובה להודעה מספר 1
 
לפונ') עד בעצם אין מה לפרק (0) שזה תנאי העצירה שלך
בתוך התנאי עצירה יש עוד בדיקה לדעתי.. של הסכום הסופי גדול מ-10 אז להמשיך בפירוק והסכימה מחדש
אחרת להחזיר את הסכום

הפירוק של המס' בעצם מאפשר לך לסכום את הספרות...


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Nesher  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 2.7.02
2 הודעות, 24 פידבק
   18:17   04.11.06   
אל הפורום  
  2. אז ככה... סדרת פיבונצ'י מורכבת מסכום 2 הספרות הקודמות  
בתגובה להודעה מספר 0
 
בסדרה
והיא מתחילה ב- 0,1 או 1,1 (זה בעצם יתן לנו את אותו הדבר)
וזה נמשך עד N מס'
0,1,1,2,3,5,8....

החישוב שכל עוד המס' שנשלח לפונ' הוא לא 0 או 1 אז מחזירים את סכום 2 הספרות הקודמות בסדרה (שזה fib(n-1)+fib(n-2); x מבין (ה-X סתם ליישור)


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Grass-Boyy
חבר מתאריך 9.6.03
3603 הודעות
   20:06   04.11.06   
אל הפורום  
  4. מה הN מציין ?  
בתגובה להודעה מספר 2
 
  

תודה רבה


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Grass-Boyy
חבר מתאריך 9.6.03
3603 הודעות
   20:22   04.11.06   
אל הפורום  
  5. וגם השורה הבאה לא מובנת לי כל כך בקלות:  
בתגובה להודעה מספר 4
 
  


return (fib (n-1) + fib (n-2));

מזה בעצם מחזיר לא ברור לי ונכון שזה רקורסיה כפולה?
אשמח אם תסבירו לי על נגיד N=5


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Nesher  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 2.7.02
2 הודעות, 24 פידבק
   20:31   04.11.06   
אל הפורום  
  6. תעשה טבלת מעקב... תמצא את התשובה מה זה N ומה הערך החזר  
בתגובה להודעה מספר 5
 
הזה נותן וגם תבין את האלגוריתם


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Grass-Boyy
חבר מתאריך 9.6.03
3603 הודעות
   23:02   04.11.06   
אל הפורום  
  7. ניסיתי לעשות טבלה ולא הבנתי בכל זאת  
בתגובה להודעה מספר 6
 
  


יש לי איזה קאטש בתפיסה


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Limp Bizkit
חבר מתאריך 2.9.02
3436 הודעות
   08:38   05.11.06   
אל הפורום  
  8. בוקר טוב, הכנתי לך תרשים זרימה  
בתגובה להודעה מספר 7
 
  

על פי הציור, הערך המוחזר הוא 1+0+1, שבאמת האיבר השלישי, הוא 2
מקווה שהבנת, בהצלחה

Ask any racer, any real racer. It doesn't matter if you win by an inch or a mile; winning's
winning.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
MULI

   11:13   05.11.06   
אל הפורום  
  9. אבל גם בFIB)0( זה אמור להחזיר 1 לא?  
בתגובה להודעה מספר 8
 
   בקוד כתוב שאם זה אפס עדיין מחזירים אחד..


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Limp Bizkit
חבר מתאריך 2.9.02
3436 הודעות
   15:53   05.11.06   
אל הפורום  
  10. היי  
בתגובה להודעה מספר 9
 
   ערכתי לאחרונה בתאריך 05.11.06 בשעה 15:56 בברכה, Limp Bizkit
 
נכון, בדיוק שהייתי בבית ספר חשבתי על זה... ובאמת יש לו טעות בקוד התוכנית

הקוד של הפונקציה "fib" אמור להיות ככה :


int fib(long n)
{
if (n==0 || n==1)
return n;
else
return fib(n-1) + fib(n-2);
}

למה long ? מאיבר מסויים המספר שמוחזר הוא מאוד מאוד גדול (אם הבדיקה שלי נכונה, המחשב (שלי לפחות) יכול להציג עד האיבר ה-40)

בהצלחה

Ask any racer, any real racer. It doesn't matter if you win by an inch or a mile; winning's
winning.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד

תגובה מהירה  למכתב מספר: 
 
___________________________________________________________________

___________________________________________________________________
למנהלים:  נעל | תייק בארכיון | מחק | העבר לפורום אחר | מחק תגובות | עגן אשכול
       



© כל הזכויות שמורות ל-רוטר.נט בע"מ rotter.net