
28-11-2009, 18:28
|
 |
|
|
חבר מתאריך: 16.07.02
הודעות: 6,814
|
|
|
מימוש XOR בפונקצייה רקורסיבית
שלום,
קבלתי עבודה לממש פונקצייה רקורסיבית שמבצעת XOR על שני מספרים בינארים המייוצגים על ידי
קוד:
int bin[]={1,0,1,0,1,1,0}
בעקרון דבר פשוט אלא שנתנו לי הגבלות. על הפונקצייה לקבל רק שלושה פרמטרים
קוד:
int binaryXor(int firstnumber[], int secondnumber[], int length)
(הפרמטר השלישי הוא גודל המערכים)
ובנוסף, נאסר שימוש בכל פונקצייה אחרת ובמשתנים סטאטיים.
המימוש שאני ביצעתי מבוסס גם על פונקצייה נוספת של חזקה(שגם אותה ממימשתי בדרך רקורסיבית) ומשתנה סטאטי.
אני לא מוצא דרך להיפטר מפונקציית החזקה שלי ולא מהמשתנה סטאטי(להזכירכם, אסור לי להכניס עוד פרמטר לפונקצייה) כמו כן, נאסר שימוש בשימוש בלולאות בכל העבודה.
כרגע המימוש לי נראה כך-
קוד:
int power(int x, int y) {
if(!y) return 1;
return x*power(x,y-1);
}
int binaryXor(int firstnumber[], int secondnumber[], int length) {
static int i=0;
if(length==1) {
i=0;
return 0;
}
return ((firstnumber[length-1]+secondnumber[length-1] == 1)?1:0)
*power(2,i++)
+binaryXor(firstnumber,secondnumber, length-1);
}
עוד הערה חשובה - הפונקצייה מחזירה את הערך בבסיסי עשרוני.
אני מקווה שהקוד שלי ברור, אם לא אני אסביר......
תודה מראש 
_____________________________________
|