עבור לתוכן

רקורסיה - שאלה נוספת

Featured Replies

פורסם

למישהו יש רעיון איך לעשות את הפונקציה הזאת בצורה רקורסיבית? (ללא לולאות)

float func_2(int n)
{
int i;
float sum=0,x;
for(i=1;i<n+1;i++)
{
x=(float)1/i;
sum+=x;
}
return sum;
}

פורסם

במקום הלולאה, הפונקציה צריכה לקרוא לעצמה עם n-1, ולהוסיף לתוצאה את 1 חלקי n.

(כמובן צריך לדאוג לתנאי עצירה וכו').

פורסם

זה טוב?

#include <stdio.h>

float recursion(int n)
{
if (n==1)
return 1;
return ((1.0/n)+recursion(n-1));
}

void main()
{
int numberOfTimes=5;
float answer=0;
answer=recursion(numberOfTimes);

printf("%f",answer);

getchar();
}

פורסם
  • מחבר

מצוין תודה :)

פורסם
  • מחבר

בצילום המצורף יש את השאלה ויש את הפתרון שכתבתי

מה לא בסדר בו ? (מחזיר ערך לא נכון)

[attachment deleted by admin]

פורסם

אינך צריך להכפיל בN, N-1 וN-2.

פורסם
  • מחבר

למה לא ? הם חלק ממבנה המשוואה.

בכל אופן ניסיתי בלעדיהם ועדיין זה נותן ערכים לא נכונים.

פורסם

מכיוון שגם שאר המשוואה שלך לא נכונה.

לדוגמא, עבור זוגי, זה צריך להיות משהו כזה -


return n-2 + func3(n-2, a, b) + (n - 1) * func_3(n - 1, a, b);

כמו כן, שים לב שבאי זוגי חזרים לך סוגריים וקריאה לפונקציה.

תעבור שוב על הנוסחאות, יש לך שם טעות.

פורסם
  • מחבר

כן מצאתי את הטעויות, תודה.

ארכיון

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

דיונים חדשים