פורסם 2010 במאי 2215 שנים אני צריך לבנות תוכנה שיודעת לזהות אם המספר הוא ראשוני או לא בריקורסיה בניתי תוכנית אבל מספרים שמעל 5000 התוכנה מחזירה פלט ריק #include <stdio.h>int chek(int x ,int y){ if (y==1) return 0; if(x%y==0) return 1; chek(x,y-1);}void main(){ int x,y,z; x=10; y=x-1; z=chek(x,y); if(z==1) printf("no\n"); if(z==0) printf("yes\n");}
פורסם 2010 במאי 2215 שנים שלום!קודם כל, תערוך בבקשה את ההודעה שלך, ושים את הקוד בתוך טג קוד (כפתור '#' ליד הכפתור של הציטוט), ככה שיהיה יותר קריא.חוץ מזה, שתי הערות:קודם כל, יש לך באג חמור - ברקורסיה שלך אתה קורא ל-chek, אבל לא משתמש בערך שלו (הקומפיילר למעשה אמור להזהיר אותך שהקוד שלך לא תקין, כי אתה לא מחזיר שום ערך).חוץ מזה, יש הגבלה על העומק של הרקורסיה, וייתכן בהחלט ש-5000 עובר את הגבול הזה.
פורסם 2010 במאי 2215 שנים למה לבנות את זה רקורסיבית?כל אלוגריתם שרץ באיטרציות יותר יעיל בלולאה פשוטה ולא ברקורסיה. (ובמקרה הספציפי שלך, גם סביר להניח שהקוד יהיה הרבה יותר מובן אם תבנה את הפונקציה שעושה את זה בלולאה)
פורסם 2010 במאי 2315 שנים ^^^כנראה כי זה תרגיל בבית ספר ואמרו להם לבנות את זה בצורה רקורסיבית...כמובן שיש דרכים יעילות יותר למצוא מספרים ראשוניים, אבל אלא אם כן הוא תלמיד בתואר ראשון למתמטיקה, אני בספק שזאת הייתה הכוונה של המורה...
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.