הרשם שאלות ותשובות רשימת חברים לוח שנה הודעות מהיום

חזור   הוסטס - פורום אחסון האתרים הגדול בישראל > עיצוב גראפי, תכנות על כל שפותיו וקידום ושיווק אתרים > פורום תיכנות

   
|!|

השב
 
כלים לאשכול תצורת הצגה
ישן 07-10-08, 18:34   # 1
Derey22
הוסטסניון
 
Derey22's Avatar
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: באר שבע
גיל: 31
הודעות: 2,128
שלח הודעה באמצעות ICO אל Derey22 שלח הודעה באמצעות MSN אל Derey22

Derey22 לא מחובר  

רקורסיה שלא עובדת כראוי.

יש לי את הקוד הבא(מה התוכנית אמורה לעשות זה לא כ"כ משנה).
קוד:
	for (int x=0;x<2;x++)
	{
		for (int y=0;y<2;y++)
		{
			for (int z=0;z<2;z++)
			{
				for (int n=0;n<2;n++)
				{
					cout << x << "," << y << "\n" << z << "," << n << "\n\n";
				}
			}	
		}
	}
ניסתי ל"המיר" את הקוד לרקורסיה כדי שאני אבחר כמה לולאות מקוננות יהיו בתוכנית:
זאת התוכנית החדשה שלא עובדת.
קוד:
void FunChe ()
{
	b++;
	if (b <= 4)
	{
			for (int a=0;a<2;a++)
			{
				for (int b=0;b<2;b++)
				{
					cout << b << "," << a << "," <<"\n";
					FunChe();

				}
			}


	}
}
משם לא הצלחתי להגיע לאותו תוצאה.

תודה לעוזרים.
  Reply With Quote
ישן 07-10-08, 18:41   # 2
Jerba
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Jun 2007
הודעות: 300

Jerba לא מחובר  

אממ , אתה מצהיר בכל לולאה על b מחדש, ואתה עוד מעלה אותו (b++) בהתחלת הריקורסיה..קצת מוזר לי..תצהיר עליו בחוץ
  Reply With Quote
ישן 07-10-08, 18:43   # 3
Derey22
הוסטסניון
 
Derey22's Avatar
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: באר שבע
גיל: 31
הודעות: 2,128
שלח הודעה באמצעות ICO אל Derey22 שלח הודעה באמצעות MSN אל Derey22

Derey22 לא מחובר  

ציטוט:
נכתב במקור על ידי Jerba צפה בהודעה
אממ , אתה מצהיר בכל לולאה על b מחדש, ואתה עוד מעלה אותו (b++) בהתחלת הריקורסיה..קצת מוזר לי..תצהיר עליו בחוץ
זה כנראה חלק מהטעות אבל לא הכול.
קוד:
int b=0;

void FunChe ()
{
	b++;
	if (b <= 4)
	{
			for (int a=0;a<2;a++)
			{
				for (int c=0;c<2;c++)
				{
					cout << a << "," << c << "," <<"\n";
					FunChe();

				}
			}


	}
}
  Reply With Quote
ישן 07-10-08, 20:06   # 4
mayden
Авторитет
 
מיני פרופיל
תאריך הצטרפות: Apr 2006
הודעות: 2,556

mayden לא מחובר  

תנסה אם כבר:
PHP קוד:
void FunChe (int b)
{
 if (
<= 4)
    {
            for (
int a=0;a<2;a++)
            {
                for (
int c=0;c<2;c++)
                {
                    
cout << << "," << << "," <<"\n";
                    
FunChe(b++);
 
                }
            }
 
 
    }

משהו כזה.. (הבנת את הכוונה לא?)
__________________

ציטוט:
" זוכרים בשביל ללמוד, יודעים בשביל ללמד, מבינים בשביל לתכנת.."
  Reply With Quote
ישן 08-10-08, 01:15   # 5
Jerba
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Jun 2007
הודעות: 300

Jerba לא מחובר  

תצהיר על המשנה מונה בחוץ , כלומר בתחילת הCLASS..
  Reply With Quote
ישן 08-10-08, 07:28   # 6
Derey22
הוסטסניון
 
Derey22's Avatar
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: באר שבע
גיל: 31
הודעות: 2,128
שלח הודעה באמצעות ICO אל Derey22 שלח הודעה באמצעות MSN אל Derey22

Derey22 לא מחובר  

תודה אפשר לנעול עזרו לי בפורום אחר.
  Reply With Quote
ישן 09-10-08, 18:46   # 7
AlmogBaku
חבר וותיק
 
AlmogBaku's Avatar
 
מיני פרופיל
תאריך הצטרפות: Nov 2007
מיקום: מודיעין
הודעות: 1,022

AlmogBaku לא מחובר  

סתם ככה לידע כללי, מקובל יותר להגדיר את b כפרמטר, ולא כמשתנה סטאטי.
מכוון שככה ניתן להשתמש במתודה בצורה חיצונית.
  Reply With Quote
ישן 09-10-08, 22:11   # 8
Davieh
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Apr 2008
מיקום: אשדוד
הודעות: 151

Davieh לא מחובר  

סתם הערה, כיום לא נפוץ השימוש בלולאות FOR ברקורסיה, אלה ב WHILE וכדומה, ככה לפחות באוניורסיטאות .. ולרמות קושי ..
כי בעצם הרקורסיה עושה את העבודה של הלולאות FOR לדוגמא רק בילדיהן ...
__________________
דוד ס.
פיתוח, בניית אתרים ומערכות ניהול מתקדמות.
0547471710 - david4156@gmail.com
  Reply With Quote
ישן 09-10-08, 23:54   # 9
SDF
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Sep 2006
מיקום: Negev
הודעות: 270

SDF לא מחובר  

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

קוד:
#include <stdio.h>


void printBin(int digits)
{
        int i = 0, j = 0;

        printf(">> Running for &#37;d digits, %d is the maximum number\n", digits, ( 1 << digits ) -1);
        for (i = 0 ; i < ( 1 << digits ); i++)
        {
                //printf("%d: ", i);
                for(j = digits - 1; j >= 0; j--)
                {
                        printf("%d ", i & ( 1 << j ) ? 1:0 );
                }
                printf("\n");
        }
}


int main()
{
        int digits = 0;
        printf("How many digits? ");
        scanf("%d", &digits);

        printBin(digits);

        return 0;
}
פלט:
קוד:
SDF@sigma:~> gcc test.c -o test
SDF@sigma:~> ./test
How many digits? 3
>> Running for 3 digits, 7 is the maximum number
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
SDF@sigma:~>
אלגוריטם איטרטיבי תמיד עדיף על זה הרקורסיבי מבחינת ביצועים.

ציטוט:
נכתב במקור על ידי Davieh צפה בהודעה
סתם הערה, כיום לא נפוץ השימוש בלולאות FOR ברקורסיה, אלה ב WHILE וכדומה, ככה לפחות באוניורסיטאות .. ולרמות קושי ..
כי בעצם הרקורסיה עושה את העבודה של הלולאות FOR לדוגמא רק בילדיהן ...
מאיפה הבאת את זה? תראה לי דבר אחד שאתה יכול לעשות עם while שאני לא אוכל לעשות עם for. כל אחד ומה שנוח לו.
__________________
FreeBSD, a *nix operating system

Last edited by SDF; 10-10-08 at 00:18.. סיבה: באג בקוד
  Reply With Quote
השב

חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים)
 


חוקי פירסום
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is מופעל
סמיילים הם מופעל
[IMG] קוד מופעל
קוד HTML מכובה

קפיצה לפורום


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

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