3 תשובות
זה כמו אינדוקציה רק הפוך, אתה מתחיל ממקרה מסובך עד שאתה מגיע למקרה פשוט.
והוא צודק, תעשה דיבאג.
404, אין שום קשר בין מה שאמרת לרקורסיה. רקורסיה אינה לולאה בשום פנים ואופן.
היא מבוססת על כך שהיא מוגדרת על ידי עצמה
אני אתן דוגמה בשביל שזה פחות יבלבל:
using static system.console;
public class program
{
public static void main()
{
for (int i=1; i<31;i++)
{
writeline($"{i} fibonacci sequence element: {fib(i)}");
}
}
static int fib(int n)
{
if (n==1||n==2)
{
return 1;
}
return fib(n-1)+fib(n-2);
}
}
//אז הקוד הזה בסי שארפ כולל פונקצייה שאם ערך הפרמטר n בה הוא 1 או 2 אז יוחזר הערך 1, אחרת יוחזר סכום ערכי הפונקצייה למספר שקודם לn ולמספר שקודם למספר שקודם לn.
בוא ניתן דוגמה:
על 1 מוחזר 1
על 2 מוחזר 1
על 3 מוחזר סכום קודמיו שזה 1 ועוד 1 שזה 2
על 4 מוחזר סכום קודמיו שזה 2 ועוד 1 שזה 3
על 5 מוחזר סכום קודמיו שזה 3 ועוד 2 שזה 5
וכך זה ממשיך
אבל זה דוגמה לרקורסיה בכך שערך ההחזר מבוסס על ערכי ההחזר הקודמים ובכך הפונקציה מוגדרת על ידי עצמה והיא מקבילה לסדרת פיבונאצ'י, סדרת פיבונאצ'י מוגדרת באופן הבא:
כל איבר הוא סכום של הזוג הקודם לו, ו2 האיברים הראשונים הם 1 ו1
מובן? או שצריך עוד הסבר
היא מבוססת על כך שהיא מוגדרת על ידי עצמה
אני אתן דוגמה בשביל שזה פחות יבלבל:
using static system.console;
public class program
{
public static void main()
{
for (int i=1; i<31;i++)
{
writeline($"{i} fibonacci sequence element: {fib(i)}");
}
}
static int fib(int n)
{
if (n==1||n==2)
{
return 1;
}
return fib(n-1)+fib(n-2);
}
}
//אז הקוד הזה בסי שארפ כולל פונקצייה שאם ערך הפרמטר n בה הוא 1 או 2 אז יוחזר הערך 1, אחרת יוחזר סכום ערכי הפונקצייה למספר שקודם לn ולמספר שקודם למספר שקודם לn.
בוא ניתן דוגמה:
על 1 מוחזר 1
על 2 מוחזר 1
על 3 מוחזר סכום קודמיו שזה 1 ועוד 1 שזה 2
על 4 מוחזר סכום קודמיו שזה 2 ועוד 1 שזה 3
על 5 מוחזר סכום קודמיו שזה 3 ועוד 2 שזה 5
וכך זה ממשיך
אבל זה דוגמה לרקורסיה בכך שערך ההחזר מבוסס על ערכי ההחזר הקודמים ובכך הפונקציה מוגדרת על ידי עצמה והיא מקבילה לסדרת פיבונאצ'י, סדרת פיבונאצ'י מוגדרת באופן הבא:
כל איבר הוא סכום של הזוג הקודם לו, ו2 האיברים הראשונים הם 1 ו1
מובן? או שצריך עוד הסבר
באותו הנושא: