ספירת מספר צמתים בעץ לא בינארי
(פורסם גם בפורום דוט נט) כאשר מדובר בפונקציה רקורסיבית לספירת צמתים בעץ בינארי, זה פשוט : אם אין ילדים => תחזיר 1, אחרת, תחזיר 1+קריאה רקורביסית לבן ימין+קריאה רקורסיבית לבן שמאל. אך כאשר מדובר בעץ שיכולים להיות לכל צומת יותר מ 2 ילדים ? הפתרון שמצאתי (מבלי להשתמש במשתנה גלובלי), הוא במקום שהפונקציה תחזיר מספר, היא לא מחזירה כלום, אלא מקבלת בחתימת הפונקציה את המשתנה שבסוף יחזיק את התוצאה, לרוץ בלולאה על כל הבנים, ועבור כל בן, להעלות את המונה, ולבצע קריאה רקורסיבית. עובד, אבל האם יש פתרון יפה יותר, כך שהפונקציה לא תקבל בחתימתה את המונה, אלא תחזיר את התוצאה כ return value ?
(פורסם גם בפורום דוט נט) כאשר מדובר בפונקציה רקורסיבית לספירת צמתים בעץ בינארי, זה פשוט : אם אין ילדים => תחזיר 1, אחרת, תחזיר 1+קריאה רקורביסית לבן ימין+קריאה רקורסיבית לבן שמאל. אך כאשר מדובר בעץ שיכולים להיות לכל צומת יותר מ 2 ילדים ? הפתרון שמצאתי (מבלי להשתמש במשתנה גלובלי), הוא במקום שהפונקציה תחזיר מספר, היא לא מחזירה כלום, אלא מקבלת בחתימת הפונקציה את המשתנה שבסוף יחזיק את התוצאה, לרוץ בלולאה על כל הבנים, ועבור כל בן, להעלות את המונה, ולבצע קריאה רקורסיבית. עובד, אבל האם יש פתרון יפה יותר, כך שהפונקציה לא תקבל בחתימתה את המונה, אלא תחזיר את התוצאה כ return value ?