אהלן,
אני רואה שכבר הסתדרת, אבל יחד עם זאת,
אם כל מה שאתה רוצה זה להדפיס מספרים בינריים, סדרות בינריות או כל דבר שמכיל 0 או 1,
הנה גרסא איטרטיבית:
קוד:
#include <stdio.h>
void printBin(int digits)
{
int i = 0, j = 0;
printf(">> Running for %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. כל אחד ומה שנוח לו.