נגדיר: "מספר עולה יורד" הוא מספר חיובי שלם שכל ספרה בו יותר גדולה מהספרה שמשמאלה, עד ספרה מסויימת, וממנה והלאה כל ספרה יותר קטנה מהספרה שמשמאלה. למשל, המספרים הבאים הם עולים יורדים –
12564, 45321, 1651, 1234, 8765, 5.
שימו לב, גם מספר שבו הספרות מסודרות בסדר עולה או בסדר יורד בלבד נחשב למספר עולה יורד, וכך גם מספר חד ספרתי.
נגדיר: "השיא של מספר עולה יורד" הוא הספרה הגדולה ביותר במספר, כלומר הספרה שעד אליה הספרות עולות, וממנה והלאה הן יורדות. למשל, השיא של המספר 12564 הוא 6, ושל המספר 1234 הוא 4. השיא של המספר 2 הוא 2.
כתבו שיטה רקורסיבית שחתימתה:
public int pick(int n)השיטה מקבלת כפרמטר מספר חיובי שלם (אין צורך לבדוק זאת) . אם המספר הוא עולה יורד לפי ההגדרה שלעיל, השיטה תחזיר את הספרה שמהווה את השיא של המספר. אם המספר אינו עולה יורד, השיטה תחזיר 1-.
שימו לב – השיטה חייבת להיות רקורסיבית ללא שימוש בלולאות כלל. כדאי לכתוב ולהשתמש בשיטות עזר (שגם הן חייבות להיות רקורסיביות) שיזומנו מהשיטה pick.
אפשר בבקשה כיוון להתחיל?