צריך עזרה ב c

timeatime

New member
צריך עזרה ב c

אני מתחיל ללמוד c ואני מתקשה עם הפונקציות הרקורסיביות מישהו יכול להפנות אותי לחומר שעוזר בזה? ובנוסף יש לי בעיה שאני לא מצליח לפתור כתוב פונקציה רקורסיבית שמחשבת את הסכום הבא
s=1*1+2*2+...n*n​
שמקבלת n תודה מראש על העזרה
 

HaRmosh

New member
רמז...

תחשוב שהסכום 1*1...n*n בנוי מהסכום 1*1...(n-1)*(n-1) בתוספת n*n. מצד שני, הסכום 1*1...(n-1)*(n-1) בנוי מהסכום 1*1...(n-2)*(n-2) בתוספת (n-1)*(n-1), וכך הלאה. זכור גם שהסכום 1*1 הוא בסיסי, ואותו אתה יודע ללא צורך בחישוב - הוא פשוט 1. מכאן אני מאמין שתסתדר... בהצלחה.
 

timeatime

New member
ניסיון ראשון שלא עובד

#include <conio.h> #include <stdio.h> int sums(int n) { if(n==1) { return 1; } else { return sums(n*n)+ sums(n-1)*(n-1); } } main(void) { int a; printf("enter the N \n"); scanf("%d",&a); printf("the score\n %d",sums(a)); }​
 

vinney

Well-known member
טעות קטנה

במקום
return sums(n*n)+ sums(n-1)*(n-1);​
תעשה
return n*n+sums(n-1);​
זה אמור לעשות לך את מה שאתה צריך
 

vinney

Well-known member
אגב, כדאי לך ללמוד עוד מושג:

טבלת מעקב. כלי הכרחי למציאת טעויות בפונקציות כאלה.
 

IP yuval

New member
הנה פונקציה קטנה שנותנת:

1+2+3+4+5+6+n int rec(int n) { return n ? n=n+rec(n-1) : n; }​
תחשוב על איך זה עובד, ותעשה מה שאתה רוצה.
 

vinney

Well-known member
לא הגזמת בכלל ../images/Emo13.gif

מותר בכלל להשתמש באופרטור :? בביצפר?
 

the another one

New member
אתה חושב שזה מצחיק להשתמש ב ?

אני אכתוב את הפונקציה שלך בצורה נורמלית !
(באמת, אף אחד כמעט לא משתמש ב ? )
int rec(int n) { }​
 

the another one

New member
אופס... מה קרה ?../images/Emo5.gif

הנה הקוד הנורמלי :
int rec(int n) { if (n==0) retrun 0; return n+rec(n-1); }​
 

DadleFish

New member
אחלה דוגמה, אתה צריך להיות מורה

פרטי
הם בטוח יבינו למה אתה מתכוון...
 

IP yuval

New member
זה בעמוד 51 בספר!

רקורסיות רק בעמוד 86! מה אתם רוצים ממני?!
 
למעלה