עבור לתוכן
View in the app

A better way to browse. Learn more.

HWzone

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

רקורסיה 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),.

ארכיון

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

דיונים חדשים

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.