נושאים פעיליםנושאים פעילים  הצגת רשימה של חברי הפורוםרשימת משתמשים  חיפוש בפורוםחיפוש  עזרהעזרה
  הרשמההרשמה  התחברותהתחברות RSS עדכונים
תיכנות
RSS UnderWarrior Forums : RSS תיכנות
נושא

נושא: רקורסיה

שליחת תגובהשליחת נושא חדש
כותב
הודעה << נושא קודם | נושא הבא >>
פיצוק
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 02 June 2007 בשעה 08:48 | IP רשוּם
ציטוט פיצוק

צריך עזרה בהבנה אני רוצה לכתוב פונקציה רקרוסיבית פשוטה שתהפוך לי מס' תלת ספרתי
func(num)
{
if(num)
    x=num%10;
    func(num/10(;
{
אני מצליח לפרק אותו
אני לא מצליח להבין איך אני מחבר אותו*10

תודה
חזרה לתחילת העמוד הצג את כרטיס החבר של פיצוק חפש הודעות אחרות של פיצוק בקר בדף הבית של פיצוק
 
Fate
פורומיסט על
פורומיסט על
סמל אישי

הצטרף / הצטרפה: 25 October 2005
משתמש: מנותק/ת
הודעות: 571
נשלח בתאריך: 02 June 2007 בשעה 13:17 | IP רשוּם
ציטוט Fate

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


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 02 June 2007 בשעה 18:25 | IP רשוּם
ציטוט פיציק

קוד:
int func(int num)
{
    int x;
    if(num)
    {
        x=num%10;
        return x*10+func(num/10);
    }
}

עדיין לא עובד לי
יש משהוא שאני מפספס פה
חזרה לתחילת העמוד הצג את כרטיס החבר של פיציק חפש הודעות אחרות של פיציק בקר בדף הבית של פיציק
 
shoshan
מנהל האתר
מנהל האתר
סמל אישי

הצטרף / הצטרפה: 16 July 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 4637
נשלח בתאריך: 02 June 2007 בשעה 22:29 | IP רשוּם
ציטוט shoshan

בפתרון הגנרי (מבחינת מספר הספרות המספר) יש לנו בעיונת קטנטונת שניתן בקלות להתמודד איתה, אבל המקרה שלך יודעים מראש שבמספר 3 ספרות...

קוד ב-c# :

קוד:
static void Main(string[] args)
{
    Console.WriteLine(reverse(123));
}

private static int reverse(int n)
{
    return reverseHelp(n, 100);
}

private static int reverseHelp(int n, int tenByDigitCount)
{
    if (n < 10)
    {
        return n;
    }

    return (n % 10) * tenByDigitCount + reverseHelp(n / 10, tenByDigitCount / 10);
}



__________________
עד מתי רשעים יעלוזו?

עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
חזרה לתחילת העמוד הצג את כרטיס החבר של shoshan חפש הודעות אחרות של shoshan בקר בדף הבית של shoshan
 
פיציק
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 02 June 2007 בשעה 23:45 | IP רשוּם
ציטוט פיציק

במעבר לc זה לא עובד לי
int func(int num ,int x)
{
    if(num<10)
    {
        return num;
    }
    else
        y=(num%10)*100;func(num/10,x/10);
        return y;
}
חזרה לתחילת העמוד הצג את כרטיס החבר של פיציק חפש הודעות אחרות של פיציק בקר בדף הבית של פיציק
 
shoshan
מנהל האתר
מנהל האתר
סמל אישי

הצטרף / הצטרפה: 16 July 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 4637
נשלח בתאריך: 03 June 2007 בשעה 00:16 | IP רשוּם
ציטוט shoshan

במקום * 100
* x

במקום ;
+


__________________
עד מתי רשעים יעלוזו?

עַל כֵּן אֶמְאַס וְנִחַמְתִּי עַל עָפָר וָאֵפֶר.
חזרה לתחילת העמוד הצג את כרטיס החבר של shoshan חפש הודעות אחרות של shoshan בקר בדף הבית של shoshan
 
נויה
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 03 June 2007 בשעה 09:48 | IP רשוּם
ציטוט נויה

העובדה שזה מספר תלת סיפרתי אינה תורמת לפיתוח הפתרון הנכון. 

לו הבעיה היתה נתונה למספר באורך לא ידוע אז ניתן יהיה להתמודד עימה בקלות:

int  reverse ( int n, int new )

{

    if ( n > 0 )

          return ( reverse ( n/10, new*10 + n%10 ) );

    else

          return ( new) ;

}

 

חזרה לתחילת העמוד הצג את כרטיס החבר של נויה חפש הודעות אחרות של נויה בקר בדף הבית של נויה
 

אם ברצונך להגיב לנושא זה עליך קודם להתחבר
אם אינך רשום/ה כבר עליך להרשם

  שליחת תגובהשליחת נושא חדש
גרסת הדפסה גרסת הדפסה

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