ABA


"זקוק לעזרה בנוגע לפתרון רקורסיבי בשפת c"
גירסת הדפסה        
קבוצות דיון פיתוח, תיכנות ובניית אתרים נושא #13599 מנהל    סגן המנהל    מפקח   Winner    צל"ש   מומחה  
אשכול מספר 13599
Grass-Boyy
חבר מתאריך 9.6.03
3603 הודעות
   18:06   27.09.06   
אל הפורום  
  זקוק לעזרה בנוגע לפתרון רקורסיבי בשפת c  
 
  

השאלה:
פתח יישום רקורסיבי (בפונקציה)
המקבל מספר שלם חיובי,
האלגוריתם מחזיר את המספר הפוך


לדוג'

1234
הפונקציה תחזיר ברקורסיה 4321


המ ון תודה לעוזר


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

  האשכול     מחבר     תאריך כתיבה     מספר  
  הייתי הולך על כיוון של.. Static 27.09.06 19:39 1
     דווקא 0 עובד במקרה הזה. FireAngel 27.09.06 20:28 3
  תעשה כך : FireAngel 27.09.06 20:26 2
     זאת בדיוק התשובה , ולפי מה שרשמת אתה לא נראה כמו אחד Net_Boy  27.09.06 22:17 4
         אני חדש :) FireAngel 27.09.06 22:41 5
             תסביר בקשה את השורה של ה Return: Grass-Boyy 30.09.06 16:01 6
                 זה מאד פשוט Net_Boy  30.09.06 16:18 7
     מכתב chatter  02.10.06 04:41 8
         חיסכון מקום :] FireAngel 02.10.06 19:07 9
  איך אני מאפס צובר בפונקציה רקורסיבית? Grass-Boyy 05.10.06 19:54 10
  קבל aaBlueDragon 09.10.06 14:32 11
     על הפונקציה להחזיר ערך זתומרת להחזיר Int ולא Void Grass-Boyy 10.10.06 23:57 12
         .. aaBlueDragon 14.10.06 01:53 13
  עוד מישהו יכול לעזור לי עם הפתרון? Grass-Boyy 23.10.06 17:46 14
  עוד לא הצלחתי, אגב ברקורסיה איך אני מאפס מונה ומשתמש בכלל במונה Grass-Boyy 03.11.06 23:25 15
     מה רע בפיתרון ש-FireAngel הביא לך? ומונה למה בדיוק? Nesher  03.11.06 23:29 16
  עוד שאלה בקשר ל Return: (שאלת הבנה) Grass-Boyy 04.11.06 16:17 17

       
Static
חבר מתאריך 1.7.02
1329 הודעות
   19:39   27.09.06   
אל הפורום  
  1. הייתי הולך על כיוון של..  
בתגובה להודעה מספר 0
 
   MOD ו DIV
כל פעם חותך את הספרה האחרונה ויוצר איתה מספר חדש
מכפיל אותו ב10
ואז מחבר אליו את המספר הבא
מכפיל ב10
וחוזר חלילה..


יש בעיה אחת בכזאת דרך.. מספר שמכיל אפסים כמו 1011
ברגע שתחתוך את ה-0 לא תוכל לחבר אותו.. אז נוצר מקרה פרטי

עוד דרך זה לעבוד עם STRING אבל לדאוג שהוא יקלוט רק את ערכי המחזרוזות של 0-9 ואז אתה חוסך מקרים פרטיים
אני יודע מJAVA שיש הרבה מאוד דרכים לפרק מחרוזות לפי תו אחרי תו..
אז פתח ספר ותתחיל לנסות


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

   20:28   27.09.06   
אל הפורום  
  3. דווקא 0 עובד במקרה הזה.  
בתגובה להודעה מספר 1
 
   תסתכל על תגובה 2 שלי.


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

   20:26   27.09.06   
אל הפורום  
  2. תעשה כך :  
בתגובה להודעה מספר 0
 
   ערכתי לאחרונה בתאריך 27.09.06 בשעה 22:53 בברכה, FireAngel
 
תלך על הרעיון של המוד והדיב.
תפעיל את הרקורסיה ע"י שליחת 2 פרמטרים של המספר div 10 וכן את המשתנה revnum (בהמשך תראה למה צריך אותו).
ואז תבנה את המספר שלך ע"י השיטה הבאה:

revnum = revnum * 10 + num % 10

revnum זה המשתנה מסוג Int החדש (בתחילה הוא 0 כמובן).

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

יישום בשפת C:


function reversenumber(int num, int revnum = 0)
{
return (num != 0 ? reversenumber(num/10,revnum * 10 + num % 10) : revnum);
}

נ.ב.
אני חדש ברקורסיות אז אל תהרגו אותי =]


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Net_Boy  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 1.4.02
17151 הודעות, 1 פידבק
   22:17   27.09.06   
אל הפורום  
  4. זאת בדיוק התשובה , ולפי מה שרשמת אתה לא נראה כמו אחד  
בתגובה להודעה מספר 2
 
   שחדש ברקורסיות


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

   22:41   27.09.06   
אל הפורום  
  5. אני חדש :)  
בתגובה להודעה מספר 4
 
   אני למדתי רקורסיות בבית ספר לפני מספר שיעורים.
עבדנו על זה בערך אם נסכם את הכל 2-4 שיעורים בערך.

אני יחסית קולט מהר=]


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Grass-Boyy
חבר מתאריך 9.6.03
3603 הודעות
   16:01   30.09.06   
אל הפורום  
  6. תסביר בקשה את השורה של ה Return:  
בתגובה להודעה מספר 5
 
  


num != 0 ? reversenumber(num/10,revnum * 10 + num % 10) : revnum

לא הבנתי כמה דברים:
מה התפקיד של סימן השאלה והנקודתיים המשתנה

תודה רבה גבר


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Net_Boy  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 1.4.02
17151 הודעות, 1 פידבק
   16:18   30.09.06   
אל הפורום  
  7. זה מאד פשוט  
בתגובה להודעה מספר 6
 
   הסינטקס לפני הסימן שאלה הוא התנאי

condition ? TRUE : FALSE

מה שב TRUE יקרה אם התנאי נכון ומה שב FALSE יקרה אם התנאי לא נכון.


במילים אחרות הדבר הזה מקביל ל:
if(num!=0)
return reversenumber(num/10,revnum * 10 + num % 10);
else
return revnum;


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
chatter 
חבר מתאריך 18.3.02
5472 הודעות, דרג אמינות חבר זה
   04:41   02.10.06   
אל הפורום  
  8. מכתב  
בתגובה להודעה מספר 2
 
   כל הכבוד.
לעתיד, הייתי מציע לך לא להשתמש בתנאי ? אלא ב if סטנדרטי (הרבה יותר קריא)


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

דרג אמינות חבר זה
   19:07   02.10.06   
אל הפורום  
  9. חיסכון מקום :]  
בתגובה להודעה מספר 8
 
   ערכתי לאחרונה בתאריך 02.10.06 בשעה 19:08 בברכה, FireAngel
 

ד"א - אני כמעט ולא משתמש ב-IF מקוצר. לעיתים נדירות אני משתמש בו.


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Grass-Boyy
חבר מתאריך 9.6.03
3603 הודעות, דרג אמינות חבר זה
   19:54   05.10.06   
אל הפורום  
  10. איך אני מאפס צובר בפונקציה רקורסיבית?  
בתגובה להודעה מספר 0
 
  


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

דרג אמינות חבר זה
   14:32   09.10.06   
אל הפורום  
  11. קבל  
בתגובה להודעה מספר 0
 
   void oppos(x){
If (x<10)
Printf(x);
Else{
Printf(“%d”,x%10);
oppos(x/10);}}


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Grass-Boyy
חבר מתאריך 9.6.03
3603 הודעות, דרג אמינות חבר זה
   23:57   10.10.06   
אל הפורום  
  12. על הפונקציה להחזיר ערך זתומרת להחזיר Int ולא Void  
בתגובה להודעה מספר 11
 
   ערכתי לאחרונה בתאריך 10.10.06 בשעה 23:58 בברכה, Grass-Boyy
 

קאפישה

תודה רבה


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

דרג אמינות חבר זה
   01:53   14.10.06   
אל הפורום  
  13. ..  
בתגובה להודעה מספר 12
 
   להחזיר, חשבתי שהמטרה היא רק להדפיס לא הייתי בטוח


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Grass-Boyy
חבר מתאריך 9.6.03
3603 הודעות, דרג אמינות חבר זה
   17:46   23.10.06   
אל הפורום  
  14. עוד מישהו יכול לעזור לי עם הפתרון?  
בתגובה להודעה מספר 0
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Grass-Boyy
חבר מתאריך 9.6.03
3603 הודעות, דרג אמינות חבר זה
   23:25   03.11.06   
אל הפורום  
  15. עוד לא הצלחתי, אגב ברקורסיה איך אני מאפס מונה ומשתמש בכלל במונה  
בתגובה להודעה מספר 0
 
  


                                                         (ניהול: מחק תגובה)
מכתב זה והנלווה אליו, על אחריות ועל דעת הכותב בלבד
Nesher  לחץ כאן להצגת דירוג המשתמש
חבר מתאריך 2.7.02
2 הודעות, 24 פידבק, 43 נקודות
   23:29   03.11.06   
אל הפורום  
  16. מה רע בפיתרון ש-FireAngel הביא לך? ומונה למה בדיוק?  
בתגובה להודעה מספר 15
 


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

if(num!=0)
return reversenumber(num/10,revnum * 10 + num % 10);
else
return revnum;

בסוף זה תמיד יגיע לפקודת הelse
יחזיר את revnum ואז מה קורה?

בין כל Return יש פעולת חיבור?



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

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

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



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