נשלח בתאריך: 27 November 2005 בשעה 23:38 | | IP רשוּם
|
|
|
|
קודם כל הדרה של רקורסיה, זה פתירה של בעיה על ידי אותה בעיה כאשר משתמשים בסופו של דבר באקסיומה[תנאי אם תרצה] מסוימת - סתם ניסוח שלי.
ועכשיו לעברית ;)
שיטה\פונקציה שקוראת לעצמה. ניקח דוגמא, נניח ואנו לא מכירים את פעולת הכפל [*] איך נוכל לכתוב שיטה שמקבלת שני מספרים וכופלת אחת בשניה? תשובה: אנחנו נסתמך על אקסיומה [מעין כלל בסיס] שאומר שכל מספר כפול 0 הוא תמיד יהיה 0, וזה בלי לדעת כפול, זה כלל שידוע לנו ואנחנו מכירים אותו...אז השיטה שלנו תראה ככה:
קוד:
long cefel(int a,int b) { if(a==0||b==0) return 0; else return cefel(a,b-1)+b; } |
|
|
מה שענו פה בעצם, התסמכנו על זה שכפל זה בעצם חיבור של מספר מסוים (A) כמה פעמים (B), ובאקסיומה שאומרת שכל מספר כפול 0 הוא 0, ולכן אם אחד מהם (A או B) הוא אפס, אנחנו ישר יכולים להחזיר אפס. אחרת אנחנו נחזיר את מכפלת המספרים של (A, B-1) ונוסיף לזה את B, שים לב שאנחנו לא יודעים מה זה כפל, אנחנו פשוט נמשיך לבצע את זה עד שאחד מהם יהיה אפס [במקרה הזה B כמובן...] תנסה לעשות איזה טבלת מעקב קטנה ואויל תבין יותר טוב :) אם זה כמובן עדין אל הספיק :)
__________________ ~ Nobody Is Perfect, I'm Nobody ~
פורומים
|