View Single Post
ישן 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