עבור לתוכן

שאלה בC רקורסיה

Featured Replies

פורסם

חברים שלום.

נניח ויש לי מערך של איברים מסוג int בגודל size.

השאלה שהוטלה עליי היא לכתוב קוד אשר מוצא במערך את המחלק הגבוהה ביותר מבין כל שני אברים במערך.

למשל אם המערך הוא 117 95 18.

אז המחלק הגבוהה הוא 9 .

בניתי כבר פונק' שנקראת gcd אשר מקבלת שתי מספרים ונותנת לי את המחלק הגבוהה מבניהם.

והתחלתי לבנות את הקוד כך שיקוץ ברקורסיה על כל המערך.

עכשיו הבעיה שלי היא כזו:

שאני מריץ את הקוד הבא הוא מחזיר לי שהמחלק הגבוהה הוא 1 .

והבעיה נעוצה בכך שהוא לא בודק את המספר 18 עם 117 ז"א איך אני גורם לו אחרי החזרה של הריקורסיה לבדוק גם את הראשון עם האחרון.

int largestgcd(int arr[],int size, int index){

int now;
if(index==size-1)
return 0;




now=gcd(arr[index],arr[index+1]);


if(now>largestgcd(arr,size,index+1))
return now;
return largestgcd(arr,size,index+1);

פורסם

הפונקצייה לא בודקת את כל האפשרויות ולא רק עבור האיבר הראשון והאחרון. הפונקצייה בודקת רק GCD בין כל 2 איברים צמודים. צריך לחשוב ולכתוב מחדשץ

ארכיון

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

דיונים חדשים