עבור לתוכן

רקורסיה C#

Featured Replies

פורסם

יש לי בעיה עם רקורסיה אני לא מבין כמה דברים:.

א)למה פונקציה רקורסיבית היא סטטית?.

ב)יש לי תנאי בסיס שאם הוא אמת אז שום דבר לא מתבצע יותר?

ג)אחרת עד מתי התוכנית מתבצעת?.

ד)איך אפשר לדעת אם הפונקציה שלי היא באמת רקורסיבית ולא איטרטיבית?.

ה)לפי מה שראיתם אני לא יודע הרבה על זה :kopfpatsch:

תודה

פורסם

א. אין קשר, פונקציה רקורסיבית יכולה להיות סטטית או לא סטטית.

ב. בערך, אבל לא בהכרח.

ג. עד שכל ענפי הרקורסיה מסתיימים.

ד. הפונקציה קוראת לעצמה? אם כן, היא רקורסיבית.

פורסם
  • מחבר

מתי להשתמש בסטטית ומתי לא?

פורסם

בהתאם לקריטריונים הרגיל, ללא קשר לרקורסיה.

האם זו פעולה על אובייקט ספציפי, או שצריכה אובייקט ספציפי? וכו'.

פורסם
  • מחבר



class Program
{
public static int Mestery(int a, int b)
{
if (a < b)
return (0);
else
return (1 + Mestery(a - b, b));
}
static void Main(string[] args)
{
Console.WriteLine(Mestery(8, 6));
}
}

אני לא מבין למה זה יוצא אחד...

אפשר לקבל הספר של שלב שלב ? תודה

פורסם

הפונקציה שלך מחזירה את מספר הפעמים שB נכנס בA - או בעצם מימוש רקורסיבי לפעולה DIV.

פשוט תנסה כמה פעמים להכניס ספרים רנדומליים, ונסה לנתח את התוצאות.

פורסם
  • מחבר

אני לא מבין דבר אחד עזוב מה היא מחשבת.

מה קורה שבמקרה המורכב יש קריאה עוד פעם לרקורסיה?,זה מחשב את זה עד למקרה הבסיס עד ש a<b?.

או שפשוט מחסירה פעם אחת את a מ b

פורסם

כשהפונקציה מגיעה ל Mestery(a - b, b) בפעם הראשונה היא קוראת לעצמה שוב, כאשר a הוא 2 ו b הוא 0, ומחזירה 0. אח"כ התוכנית חוזרת אל הפונקציה הראשונה ואז מחזירה לתוכנית 1 + 0, לכן יוצא לך 1.

פורסם
  • מחבר


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace recursive1
{
class Program
{
public static float Mestery(int[] a,int k)
{
float x;
if(k==1)
return(a[0]);
x=Mestery(a,k-1)*(k-1);
return ((a[k-1]+x)/k);
}
static void Main(string[] args)
{
int[] a = new int[3];
int k = 2;
Console.WriteLine(Mestery(a[3], 2));
}
}
}

רציתי לבדוק את התוצאה של הרקורסיה הזו אבל ש לי שגיאה בהרצה:אין אפשרות להמיר int ל int[].

הפועלה מקבלת מערך של מספרים שאינו רק ומספר נוסף שלם חיובי.

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

אני בטוח שאם אני אראה טבלת מעקב מסודרת זה יסדר לי את הראש טיפ טופ. :s07: :s07:

פורסם

הבעייה היא בקריאה לMestery

שים לב שאתה מעביר את [a[3- כלומר את התא הרביעי במערך (מה שבכל מקרה שגוי כי גודל המערך שלך הוא 3), ולא את המערך עצמו.

בשביל להעביר מערך בתור פרמטר פשוט תעביר את השם שלו (במקרה הזה a),.

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים