שינויים

יצירת דף עם התוכן "[[תקציר שימושי מחשב, סמסטר ב תשעג, גיא בלשר|חזרה לקישורים לתקצירים]] ==הקדמה== מתוך פונקציה ש..."
[[תקציר שימושי מחשב, סמסטר ב תשעג, גיא בלשר|חזרה לקישורים לתקצירים]]

==הקדמה==

מתוך פונקציה שאנו מגדירים ניתן לקרוא לעצמה.

'''ברקורסיה חשוב לזכור:'''
#''' תנאי עצירה
#''' "צעד" הרקורסיה - זימון הפעולה בתוך עצמה'''

==תרגילים==

===תרגיל 1 - חישוב עצרת===

נזכור כי: <BR>
<math>\left\{\begin{matrix}n!=\left ( n-1 \right )!\cdot n
\\
0!=1 \ \ \ \ \ \ \ \ \ \ \ \
\end{matrix}\right.</math>

ונכתוב פונקציה מתאימה:
<div align="left">
(function [f] = fact (n
if n==0
;f=1
else
;(f=n*fact(n-1
end
end
<div align="right">

===תרגיל 2 - מקדמים בינומיים===

המקדם הבינומי <math>\binom{n}{k}</math> מונה כמה אפשרויות יש לנו לבחירת <math>k</math> איברים מתוך <math>k</math> ללא בחירת איבר פעמיים וללא חשיבות לסדר.

נוסחה סגורה לחישוב: <math>\binom{n}{k}=\frac{n!}{k!\left ( n-k \right )!}</math>

מ[http://www.mathsisfun.com/images/pascals-triangle-n-choose-k.gif משולש פסקל] אנו מקבלים נוסחת נסיגה לחישובם: <math>\binom{n}{k}=\binom{n-1}{k}+\binom{n-1}{k-1}</math>.

נכתוב פונקציה מתאימה:
<div align="left">
(function [b] = binomial (n,k
if k==0 || k==n
;b=1
else
;(b=binomial(n-1,k)+binomial(n-1,k-1
end
end
<div align="right">

===תרגיל 3 - איחוד מערכים ממוינים===

'''המטרה: לאחד שני מערכים ממוינים u,v למערך ממוין'''

הפונקציה המתאימה:
<div align="left">
(function [w] = merge (u,v
;(nu=length(u
;(nv=length(v
;nw=nu+nv
;(w=zeros(nw,1
if nu==0
;w=v
elseif nv==0
;w=u
else
;ku=1
;kv=1
for kw=1:nw
((if (ku<=nu) && (kv>nv || u(ku)<v(kv
;(w(kw)=u(ku
;ku=ku+1
else
;(w(kw)=v(kv
;kv=kv+1
end
end
end
end
<div align="right">

===תרגיל 4 - מיון מערך===

'''המטרה: למיין מערך ביעילות <math>O(n\cdot\ln n)</math>'''

הביצוע: כל פעם נחלק לשני תת־מערכים, נמיין אותם ונאחד (באמצעות הפעולה מתרגיל 3)

הפונקציה המתאימה:
<div align="left">
(function [w] = mergeSort (v
;(n=length(v
if n<=1
;w=v
else
;(m=floor(n/2
;((w1=mergeSort(v(1:m
;((w2=mergeSort(v(m+1:n
;(w=merge(w1,w2
end
end
<div align="right">