רקורסיה סבוכה ב - C#

ht2006

New member
רקורסיה סבוכה ב - C#

שלום לכולם,
אשמח לעזרה עם הדרישה הבאה
יש ביטוי חיפוש שיכול להכיל | - או , & - וגם וכן סוגריים
ויכול להיות גם בתוך הסוגריים עוד סוגריים כמובן..
את הביטוי הזה צריך להמיר לאובייקט SetExpression שהינו האוביקט הרשאי והוא רקורסיבי כלומר יכול להכיל גם SetExpression
בכל SetExpression יש לבחור את הקשר בין ביטויי החיפוש (And / OR) ובעצם SetExpression מהווה ביטוי חיפוש בין סוגריים
כל SetExpression מכיל ביטויי חיפוש
Operator: וגם / או
FullTexts: המחרוזות לחיפוש
SetExpression : עוד חיפוש רקורסיבי

/// <summary>
/// The main search expression
/// It consists of a set of text to search, filtering by properties values and also a nested set of expressions
/// </summary>
public class SetExpression
{
/// <summary>
/// Operator AND / OR between FullTexts
/// </summary>
public SearchOperator Operator;
/// <summary>
/// List of text to search
/// </summary>
public string[] FullTexts{ get; set; }
/// <summary>
/// List of a nested search expressions
/// </summary>
public SetExpression[] Expressions { get; set; }
}

תודה מראש
 

BravoMan

Active member
והיכן בדיוק הסתבכת?

זו נראית רקורסיה די בסיסית...
 

ht2006

New member
הסיבוכיות היא

כל סוגריים זה בעצם ביטוי
סוגריים יכול להכיל עוד סוגריים
בכל סוגריים יכול להיות ביטוי שמורכב גם מאופרטור או וגם מאופרטור גם , וכן רק מאחד מהאופרטורים, או שיוזר סתם הכניס סוגריים ואין בפנים ביטוי...
איך אני שומרת את הExpression שיחזור לי בסוף הפונקציה, כלומר על מה אני עושה את הרקורסיה?

אם זה דיי בסיסי, אשמח לקבל קוד.
שאלתי כמה מפתחים תותחיים והם לא בדיוק שלפו.
 

BravoMan

Active member
אולי היית צריכה לשאול מפתחי תת-מקלע


עכשיו ברצינות:
כאן בפורום לא נוהגים לפתור שיעורי בית. נוהגים לעזור לאנשים להגיע לפתרון בעצמם.
&nbsp
שאלתי אותך "היכן הסתבכת" כדי להבין טוב יותר מה בדיוק בתרגיל לא מובן לך, ואז לנסות לעזור לעניין.
&nbsp
את הרקורסיה את עושה מן הסתם על הקלט - הביטוי המלא שהתקבל.
אני מניח שהשאלה האמתית שלך היא בעצם:
מה עושה הפונקציה שלי, ומתי אני נכנסת אליה רקורסיבית?
&nbsp
אז בגדול, התשובה היא:
את מתחילה לעבור על הביטוי, ולאחסן את התוכן שלו (מחרוזת, & ו-I) בתוך אובייקט Expression הראשון.
אם את נתקלת בסוגריים, את קוראת רקורסיבית לפונקציה הזו שתתחיל לעשות את אותו הדבר עבור "תת-ביטוי" שיש בתוך הסוגריים.
&nbsp
בסוף הפונקציה מחזירה אובייקט Expression אחד, שבתוכו יש מקום (מערך דינמי למשל) שמחזיק עוד אובייקטים כאלה.
 
למעלה