שאלה אתגרית

Ram16

New member
שאלה אתגרית

איך אני מונה את מספר הספרות של מספר מסויים בלי להשתמש כלל בלולאות?? לדוגמא, אני מקבל מספר 121, והפלט יהיה 3 תודה רבה מראש!
 

DNile

New member
רקורסיה...

כשאסור לולאות, פונים לרקורסיה.. אם לא, אתה יכול לעשות מה שנקרא loop unwinding, שזה פשוט לבטל את הלולאה על ידי זה שאתה חוסר הרבה פעמים על אותה הפקודה.(ומבצע ifים וreturnים באמצע).
 

Ram16

New member
רקורסיה זה סוג של לולאה

תסביר על הדבר השני שדיברת עליו... לא ירדתי לסוף דעתך... לא מכיר דבר כזה.. תודה מראש!
 
הופך לסטרינג ומדפיס את האורך

 
ודרך אגב בשאלות מהסוג הזה

(שאסור להשתמש בלולאות) אני כמעט משוכנע ב100% שאפשר להשתמש ברקורסיה...
 
כן

הרי זה רץ על מערך התווים עד שזה מוצא את התו null. אבל מצד שני אני לא אמור לדעת איך זה ממומש מצידי שיהיה משתנה שישמור את מספר התווים במחרוזת
למרות שההכנסה למחרוזת תהיה בעייתית לא חושב שאפשר בלי לולאה כלשהי.. (ושוב אני לא אמור לדעת איך זה ממומש
)
 
וכמובן ששכחתי שגם פעולת ההפיכה

למחרוזת כוללת לולאה itoa ltoa וכו'... הכל עם לולאות חבוב
 

eyalbd

New member
אפשר להשתמש ב log10

אולי לא התכוונו לזה אבל אין כאן לולאה....
 

eyalbd

New member
התכוונתי לזה

unsigned int digits(unsigned int n) { // accepts n > 0 // return 1 + (int) floor( log10((double)n) ); }​
אין כאן לולאה ואין רקורסיה. אבל כנראה שזו לא היתה הכוונה בשאלה.
 

cybordyn

New member
מה קרה לכם אנשים?

1. הפתרון: פונקציה רקורסיבית שבכל קריאה: מגדילים את המונה ב 1. מחלקים את המספר ב 10. אם המספר הוא אפס (אחרי שני הצעדים הנ"ל), זהו התנאי להפסקת הרקורסיה. 2. למי שכתב את ה sizeof, זה כבר ממש לא עובד - בכל מקרה. sizeof תחזיר את הגודל של ה pointer ולא של המחרוזת. sizeof למי שלא יודע, זה פונקצית pre-processor, מתורגמת עוד לפני הקומפילציה (בדיוק כמו מאקרו define).
 
מה קורה לנו באמת???../images/Emo26.gif

1) הוא לא רצה פתרון ברקורסיה.... 2) אני ממש לא מבין בתחום - אבל sizeof לא מוגדר כאופרטור?
 
למעלה