רקורסיה C# - תכנות - HWzone פורומים
עבור לתוכן
  • צור חשבון

רקורסיה C#


omfir

Recommended Posts

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

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

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

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

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

ה)לפי מה שראיתם אני לא יודע הרבה על זה :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));
}
}

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

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

קישור לתוכן
שתף באתרים אחרים

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

מה קורה שבמקרה המורכב יש קריאה עוד פעם לרקורסיה?,זה מחשב את זה עד למקרה הבסיס עד ש 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),.

קישור לתוכן
שתף באתרים אחרים

ארכיון

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

×
  • צור חדש...