הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   שאלה בריקורסיה ב C צריך עזרה. (https://hosts.co.il/forums/showthread.php?t=11237)

HostGZ.com|אור 30-12-05 14:34

שאלה בריקורסיה ב C צריך עזרה.
 
זה דיי פשוט אני רוצה לבדוק אם עשיתי טוב.
- כתוב פונקציה רקורסיבית המקבלת מספר שלם n ומדפיסה את כל המספרים מ 1 עד n .

עשיתי ככה:
קוד:

int num(int n)
{
if(n>0)
{
printf("%d",n);
return num(n-1);
}

עכשיו השאלה האם זה ידפיס את זה 54321 או 12345 ?

meshuga 30-12-05 14:36

אתה רוצה לעשות שאם אתה מכניס 5 אז זה יעשה
12345
?
כי זה מה שאני הבנתי..

HostGZ.com|אור 30-12-05 14:36

כן

meshuga 30-12-05 14:41

ציטוט:

נכתב במקור על ידי HostGZ.com|אור
כן

אתה צריך לולאה.....זה צריך להיות ככה:
קוד:

int num(int n)
{
if(n>0)
{
int i;

for(i=1;i<n;i++)
 printf("%d",i);
printf("%d",n);
}
 return 0;
}

אממ...אם אתה רוצה שזה יחזיר לך לתוך משתנה את ה54321 אז תגיד אני ינסה לעשות גם..אני כולה כיתה י' :rolleyes: ;)
כי מה שזה עושה עכשיו זה רק מדפיס את זה...והסדר הוא
12345
אם אתה רוצה הפוך..תעשה ש-i=n-1 ו-i=>1 ו-i--

HostGZ.com|אור 30-12-05 14:42

עם לולאה זה לא בעיה.. כל הקטע שזה ריקורסיה..

אבל תודה שניסיתה לעזור

HostGZ.com|אור 30-12-05 14:46

ציטוט:

נכתב במקור על ידי meshuga
אתה צריך לולאה.....זה צריך להיות ככה:
קוד:

int num(int n)
{
if(n>0)
{
int i;

for(i=1;i<n;i++)
 printf("%d",i);
printf("%d",n);
}
 return 0;
}

אממ...אם אתה רוצה שזה יחזיר לך לתוך משתנה את ה54321 אז תגיד אני ינסה לעשות גם..אני כולה כיתה י' :rolleyes: ;)
כי מה שזה עושה עכשיו זה רק מדפיס את זה...והסדר הוא
12345
אם אתה רוצה הפוך..תעשה ש-i=n ו-i>1 ו-i--

יש לך טעות ניראה לי לא צריך להדפיס את ה N מספיק את ה I . (וצריך I=N)
ואם אתה כיתה י' אז עוד לא למדתם ריקורסיה..

עוד מישהו יודע פה C ריקורסיה?

meshuga 30-12-05 14:47

ציטוט:

נכתב במקור על ידי HostGZ.com|אור
עם לולאה זה לא בעיה.. כל הקטע שזה ריקורסיה..

אבל תודה שניסיתה לעזור

אני לא מכיר שום דרך אחרת...בכל מקרה....בהצלחה....
ציטוט:

יש לך טעות ניראה לי לא צריך להדפיס את ה N מספיק את ה I . (וצריך I=N)
ואם אתה כיתה י' אז עוד לא למדתם ריקורסיה..
נכון,אפשר,אבל עשיתי את זה שיראה כמו הקוד שלך;) ....

בכל מקרה.אני אשמח להסבר קטנטן על רקורסיה...

HostGZ.com|אור 30-12-05 14:48

ציטוט:

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

לא משנה תודה שניסיתה !

HostGZ.com|אור 30-12-05 14:59

ציטוט:

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

נכון,אפשר,אבל עשיתי את זה שיראה כמו הקוד שלך;) ....

בכל מקרה.אני אשמח להסבר קטנטן על רקורסיה...

ריקורסיה שזה שהפונקציה קוראת לעצמה .
זה מבוסס על מחסנית.
אין הרבה עבודה אבל יותר חשיבה..
אממ
כך:
http://clang.eitan.ac.il/index.php?doc=chp&id=10

meshuga 30-12-05 15:01

ציטוט:

נכתב במקור על ידי HostGZ.com|אור
ריקורסיה שזה שהפונקציה קוראת לעצמה .
זה מבוסס על מחסנית.
אין הרבה עבודה אבל יותר חשיבה..
אממ
כך:
http://clang.eitan.ac.il/index.php?doc=chp&id=10

אה..לא ידעתי שיש לכזה דבר שם,בכל מקרה,יש את זה בPHP,למשל,אם אתה עושה שם רנדומלי,ואתה עושה בדיקה בתוך הפונקציה אם השם קיים,אתה קורה לפונקציה עוד פעם בתוך הפונקציה...אז אני יחזור אליך אם אני יצליח.
עריכה:
ד"א
אני יודע שזה לא חוכמה אבל בדקתי לך בקומפיילר וזה מחזיר 54321


כל הזמנים הם GMT +2. הזמן כעת הוא 14:35.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ