![]() |
# 1 |
הוסטסניון
|
רקורסיה שלא עובדת כראוי.
יש לי את הקוד הבא(מה התוכנית אמורה לעשות זה לא כ"כ משנה).
קוד:
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(); } } } } תודה לעוזרים. |
![]() |
![]() |
# 2 |
חבר בקהילה
|
אממ , אתה מצהיר בכל לולאה על b מחדש, ואתה עוד מעלה אותו (b++) בהתחלת הריקורסיה..קצת מוזר לי..תצהיר עליו בחוץ
|
![]() |
![]() |
# 3 | |
הוסטסניון
|
ציטוט:
קוד:
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(); } } } } |
|
![]() |
![]() |
# 4 | |
Авторитет
|
תנסה אם כבר:
PHP קוד:
__________________
![]() ציטוט:
|
|
![]() |
![]() |
# 5 |
חבר בקהילה
|
תצהיר על המשנה מונה בחוץ , כלומר בתחילת הCLASS..
|
![]() |
![]() |
# 6 |
הוסטסניון
|
תודה אפשר לנעול עזרו לי בפורום אחר.
|
![]() |
![]() |
# 7 |
חבר וותיק
|
סתם ככה לידע כללי, מקובל יותר להגדיר את b כפרמטר, ולא כמשתנה סטאטי.
מכוון שככה ניתן להשתמש במתודה בצורה חיצונית. |
![]() |
![]() |
# 8 |
חבר בקהילה
|
סתם הערה, כיום לא נפוץ השימוש בלולאות FOR ברקורסיה, אלה ב WHILE וכדומה, ככה לפחות באוניורסיטאות .. ולרמות קושי ..
כי בעצם הרקורסיה עושה את העבודה של הלולאות FOR לדוגמא רק בילדיהן ...
__________________
|
![]() |
![]() |
# 9 |
חבר בקהילה
|
אהלן,
אני רואה שכבר הסתדרת, אבל יחד עם זאת, אם כל מה שאתה רוצה זה להדפיס מספרים בינריים, סדרות בינריות או כל דבר שמכיל 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:~> מאיפה הבאת את זה? תראה לי דבר אחד שאתה יכול לעשות עם while שאני לא אוכל לעשות עם for. כל אחד ומה שנוח לו. Last edited by SDF; 10-10-08 at 00:18.. סיבה: באג בקוד |
![]() |
![]() |
חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים) | |
|
|