Ce diaporama a bien été signalé.
Le téléchargement de votre SlideShare est en cours. ×

פייתון רקורסיה

Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité

Consultez-les par la suite

1 sur 45 Publicité

Plus De Contenu Connexe

Plus par Igor Kleiner (20)

Plus récents (20)

Publicité

פייתון רקורסיה

  1. 1. ‫מדעי‬ ‫לתכנות‬ ‫מבוא‬ ‫הרצאה‬10‫חלק‬6 ‫רקורסיה‬ 2017 Igor Kleiner ©
  2. 2. ‫מטרה‬ ‫רקורסיה‬ ‫היא‬ ‫מה‬ ‫להבין‬ ‫רקורסיביות‬ ‫בפונקציות‬ ‫בפייתון‬ ‫להשתמש‬ ‫איך‬ ‫ללמוד‬ ‫ברקורסיה‬ ‫לשימוש‬ ‫שונות‬ ‫דוגמאות‬ ‫לראות‬
  3. 3. ‫רקורסיה‬ "‫רקורסיה‬ ‫להבין‬ ‫יש‬ ‫רקורסיה‬ ‫להבין‬ ‫כדי‬"
  4. 4. ‫רקורסיה‬ "‫רקורסיה‬ ‫להבין‬ ‫יש‬ ‫רקורסיה‬ ‫להבין‬ ‫כדי‬" ‫בעיות‬ ‫לפתרון‬ ‫דרך‬ ‫היא‬ ‫רקורסיה‬ ‫כאשר‬‫פותרים‬‫בעיה‬‫ברקורסיה‬"‫שוברים‬"‫יותר‬ ‫קטנה‬ ‫לבעיה‬ ‫המקורית‬ ‫הבעיה‬ ‫את‬,‫וכך‬ ‫לפתור‬ ‫יודעים‬ ‫שאותה‬ ‫טריוויאלית‬ ‫קטנה‬ ‫לבעיה‬ ‫שמגיעים‬ ‫עד‬ ‫ממשיכים‬
  5. 5. ‫הדגמה‬ ‫לחשב‬ ‫צריכים‬ ‫שאנו‬ ‫נניח‬5!‫שאנו‬ ‫ונניח‬‫החישוב‬ ‫את‬ ‫לבצע‬ ‫איך‬ ‫יודיעם‬ ‫לא‬ ‫ננסה‬‫חישוב‬ ‫הביעה‬ ‫את‬ ‫לשבור‬5!‫קטנה‬ ‫יותר‬ ‫לבעיה‬:‫של‬ ‫חישוב‬4!
  6. 6. ‫הדגמה‬ •‫לחשב‬ ‫צריכים‬ ‫שאנו‬ ‫נניח‬5!‫שאנו‬ ‫ונניח‬‫החישוב‬ ‫את‬ ‫לבצע‬ ‫איך‬ ‫יודיעם‬ ‫לא‬ •‫ננסה‬‫חישוב‬ ‫הביעה‬ ‫את‬ ‫לשבור‬!5‫של‬ ‫חישוב‬ ‫קטנה‬ ‫יותר‬ ‫לבעיה‬4! •‫ו‬ ‫היות‬ ‫קשה‬ ‫לא‬ ‫זה‬-5!=5*4!‫לכן‬‫לחשב‬ ‫לנו‬ ‫מספיק‬4! •‫ננסה‬‫לשבור‬‫את‬‫הביעה‬‫חישוב‬4!‫של‬ ‫חישוב‬ ‫קטנה‬ ‫יותר‬ ‫לבעיה‬3! •4!=4*3!,‫לחשב‬ ‫כדי‬3!‫של‬ ‫בחישוב‬ ‫נעזר‬2!,3!=3*2!,‫ואז‬2!=2*1!=2*1
  7. 7. ‫הדגמה‬ ‫בכתיב‬‫אחר‬: Factorial(n)=n*factorial(n-1) Factorial(1)=1 ‫רקורסיה‬ ‫משוואת‬ ‫עצירה‬ ‫תנאי‬
  8. 8. ‫הדגמה‬ ‫בכתיב‬‫אחר‬: Factorial(n)=n*factorial(n-1) Factorial(1)=1 ‫רקורסיה‬ ‫משוואת‬ ‫עצירה‬ ‫תנאי‬
  9. 9. ‫הדגמה‬ ‫בכתיב‬‫אחר‬: Factorial(n)=n*factorial(n-1) Factorial(1)=1 ‫רקורסיה‬ ‫משוואת‬ ‫עצירה‬ ‫תנאי‬
  10. 10. 3‫חוקים‬‫של‬‫רקורסיה‬ .1‫עצירה‬ ‫תנאי‬ ‫להיות‬ ‫צריך‬ ‫תמיד‬ ‫לרקורסיה‬(base case)
  11. 11. 3‫חוקים‬‫של‬‫רקורסיה‬ .1‫עצירה‬ ‫תנאי‬ ‫להיות‬ ‫צריך‬ ‫תמיד‬ ‫לרקורסיה‬(base case) .2‫עצירה‬ ‫תנאי‬ ‫של‬ ‫לכיוון‬ ‫מתקרבים‬ ‫צעד‬ ‫כל‬ ‫אנו‬ ‫רקורסיבי‬ ‫בפתרון‬(‫יותר‬ ‫בעיה‬ ‫פותרים‬ ‫פשוטה‬)
  12. 12. 3‫חוקים‬‫של‬‫רקורסיה‬ .1‫עצירה‬ ‫תנאי‬ ‫להיות‬ ‫צריך‬ ‫תמיד‬ ‫לרקורסיה‬(base case) .2‫עצירה‬ ‫תנאי‬ ‫של‬ ‫לכיוון‬ ‫מתקרבים‬ ‫צעד‬ ‫כל‬ ‫אנו‬ ‫רקורסיבי‬ ‫בפתרון‬(‫יותר‬ ‫בעיה‬ ‫פותרים‬ ‫פשוטה‬) .3‫לעצמה‬ ‫קוראת‬ ‫רקורסיבית‬ ‫פונקציה‬
  13. 13. 3‫חוקים‬‫של‬‫רקורסיה‬ .1‫עצירה‬ ‫תנאי‬ ‫להיות‬ ‫צריך‬ ‫תמיד‬ ‫לרקורסיה‬(base case) .2‫עצירה‬ ‫תנאי‬ ‫של‬ ‫לכיוון‬ ‫מתקרבים‬ ‫צעד‬ ‫כל‬ ‫אנו‬ ‫רקורסיבי‬ ‫בפתרון‬(‫יותר‬ ‫בעיה‬ ‫פותרים‬ ‫פשוטה‬) .3‫לעצמה‬ ‫קוראת‬ ‫רקורסיבית‬ ‫פונקציה‬
  14. 14. ‫הדגמה‬:‫עצרת‬ ‫חישוב‬
  15. 15. ‫הדגמה‬:‫עצרת‬ ‫חישוב‬
  16. 16. ‫דוגמא‬2: ‫חשב‬:S(n)=1+2+3+4+….+n‫בעזרת‬‫רקורסי‬‫ה‬
  17. 17. ‫דוגמא‬2: ‫חשב‬:S(n)=1+2+3+4+….+n‫בעזרת‬‫רקורסיה‬ ‫תנאי‬‫עצירה‬:S(?)=?
  18. 18. ‫דוגמא‬2: ‫חשב‬:S(n)=1+2+3+4+….+n‫בעזרת‬‫רקורסיה‬ ‫תנאי‬‫עצירה‬:S(0)=0
  19. 19. ‫דוגמא‬2: ‫חשב‬:S(n)=1+2+3+4+….+n‫בעזרת‬‫רקורסיה‬ ‫תנאי‬‫עצירה‬:S(0)=0 ‫משוואת‬‫רקורסיה‬:S(n)=S(?)??
  20. 20. ‫דוגמא‬2: ‫חשב‬:S(n)=1+2+3+4+….+n‫בעזרת‬‫רקורסיה‬ ‫תנאי‬‫עצירה‬:S(0)=0 ‫משוואת‬‫רקורסיה‬:S(n)=S(n-1)+?
  21. 21. ‫דוגמא‬2: ‫חשב‬:S(n)=1+2+3+4+….+n‫בעזרת‬‫רקורסיה‬ ‫תנאי‬‫עצירה‬:S(0)=0 ‫משוואת‬‫רקורסיה‬:S(n)=S(n-1)+n
  22. 22. ‫דוגמא‬2: ‫חשב‬:S(n)=1+2+3+4+….+n‫בעזרת‬‫רקורסיה‬ ‫תנאי‬‫עצירה‬:S(0)=0 ‫משוואת‬‫רקורסיה‬:S(n)=S(n-1)+n
  23. 23. ‫דוגמא‬2: ‫חשב‬:S(n)=1+2+3+4+….+n‫בעזרת‬‫רקורסיה‬ ‫תנאי‬‫עצירה‬:S(0)=0 ‫משוואת‬‫רקורסיה‬:S(n)=S(n-1)+n
  24. 24. ‫דוגמא‬2: ‫חשב‬:S(n)=1+2+3+4+….+n‫בעזרת‬‫רקורסיה‬ ‫תנאי‬‫עצירה‬:S(0)=0 ‫משוואת‬‫רקורסיה‬:S(n)=S(n-1)+n
  25. 25. ‫דוגמא‬2: ‫חשב‬:S(n)=1+2+3+4+….+n‫בעזרת‬‫רקורסיה‬ ‫תנאי‬‫עצירה‬:S(0)=0 ‫משוואת‬‫רקורסיה‬:S(n)=S(n-1)+n ‫פתרון‬‫ללא‬‫רקורסיה‬:
  26. 26. ‫דוגמא‬3: ‫האם‬‫מחרוזת‬S‫היא‬‫פולינדרום‬?
  27. 27. ‫דוגמא‬3: ‫האם‬‫מחרוזת‬S‫היא‬‫פולינדרום‬?BlaabllbaalB ‫מחרוזת‬‫באורך‬‫גדול‬‫מ‬-2,‫כ‬‫לומר‬aTb‫היא‬‫פולינדרום‬‫אם‬"‫מ‬:a=b‫ו‬-T‫פולינדרום‬ ‫גם‬
  28. 28. ‫דוגמא‬3: ‫האם‬‫מחרוזת‬S‫היא‬‫פולינדרום‬?BlaabllbaalB ‫מחרוזת‬‫באורך‬‫גדול‬‫מ‬-2,‫בלומר‬aTb‫היא‬‫פולינדרום‬‫אם‬"‫מ‬:a=b‫ו‬-T‫פולינדרום‬ ‫גם‬ ‫תנאי‬‫עצירה‬:‫באורך‬ ‫מחרוזת‬ ‫כל‬1‫או‬0‫פולינדרום‬ ‫צעד‬‫רקורסיה‬:‫מ‬ ‫גדול‬ ‫מחרוזת‬ ‫אורך‬ ‫אם‬-2‫אזי‬S=aTb‫היא‬‫פולינדרים‬‫אם‬"‫ם‬a=b‫ו‬-T‫גם‬ ‫פולינדרום‬
  29. 29. ‫דוגמא‬3: ‫האם‬‫מחרוזת‬S‫היא‬‫פולינדרום‬?BlaabllbaalB ‫מחרוזת‬‫באורך‬‫גדול‬‫מ‬-2,‫בלומר‬aTb‫היא‬‫פולינדרום‬‫אם‬"‫מ‬:a=b‫ו‬-T‫פולינדרום‬ ‫גם‬ ‫תנאי‬‫עצירה‬:‫באורך‬ ‫מחרוזת‬ ‫כל‬1‫או‬0‫פולינדרום‬ ‫צעד‬‫רקורסיה‬:‫מ‬ ‫גדול‬ ‫מחרוזת‬ ‫אורך‬ ‫אם‬-2‫אזי‬S=aTb‫היא‬‫פולינדרים‬‫אם‬"‫ם‬a=b‫ו‬-T‫גם‬ ‫פולינדרום‬
  30. 30. ‫דוגמא‬3: ‫האם‬‫מחרוזת‬S‫היא‬‫פולינדרום‬?BlaabllbaalB ‫מחרוזת‬‫באורך‬‫גדול‬‫מ‬-2,‫בלומר‬aTb‫היא‬‫פולינדרום‬‫אם‬"‫מ‬:a=b‫ו‬-T‫פולינדרום‬ ‫גם‬ ‫תנאי‬‫עצירה‬:‫באורך‬ ‫מחרוזת‬ ‫כל‬1‫או‬0‫פולינדרום‬ ‫צעד‬‫רקורסיה‬:‫מ‬ ‫גדול‬ ‫מחרוזת‬ ‫אורך‬ ‫אם‬-2‫אזי‬S=aTb‫היא‬‫פולינדרים‬‫אם‬"‫ם‬a=b‫ו‬-T‫גם‬ ‫פולינדרום‬
  31. 31. ‫דוגמא‬3: ‫האם‬‫מחרוזת‬S‫היא‬‫פולינדרום‬?BlaabllbaalB ‫מחרוזת‬‫באורך‬‫גדול‬‫מ‬-2,‫בלומר‬aTb‫היא‬‫פולינדרום‬‫אם‬"‫מ‬:a=b‫ו‬-T‫פולינדרום‬ ‫גם‬ ‫תנאי‬‫עצירה‬:‫באורך‬ ‫מחרוזת‬ ‫כל‬1‫או‬0‫פולינדרום‬ ‫צעד‬‫רקורסיה‬:‫מ‬ ‫גדול‬ ‫מחרוזת‬ ‫אורך‬ ‫אם‬-2‫אזי‬S=aTb‫היא‬‫פולינדרים‬‫אם‬"‫ם‬a=b‫ו‬-T‫גם‬ ‫פולינדרום‬
  32. 32. ‫דוגמא‬4: ‫סדרה‬‫פיבונצי‬: ‫תזכורת‬: F(0)=1,F(1)=1, F(N)=F(N-1)+F(N-2)
  33. 33. ‫דוגמא‬4: ‫סדרה‬‫פיבונצי‬: ‫תזכורת‬: F(0)=1,F(1)=1, F(N)=F(N-1)+F(N-2) ‫פתרון‬‫רקורסיבי‬: ‫תנאי‬‫עצירה‬:?
  34. 34. ‫דוגמא‬4: ‫סדרה‬‫פיבונצי‬: ‫תזכורת‬: F(0)=1,F(1)=1, F(N)=F(N-1)+F(N-2) ‫פתרון‬‫רקורסיבי‬: ‫תנאי‬‫עצירה‬:F(0)=1,F(1)=1
  35. 35. ‫דוגמא‬4: ‫סדרה‬‫פיבונצי‬: ‫תזכורת‬: F(0)=1,F(1)=1, F(N)=F(N-1)+F(N-2) ‫פתרון‬‫רקורסיבי‬: ‫תנאי‬‫עצירה‬:F(0)=1,F(1)=1 ‫משוואת‬‫רקורסיה‬:?
  36. 36. ‫דוגמא‬4: ‫סדרה‬‫פיבונצי‬: ‫תזכורת‬: F(0)=1,F(1)=1, F(N)=F(N-1)+F(N-2) ‫פתרון‬‫רקורסיבי‬: ‫תנאי‬‫עצירה‬:F(0)=1,F(1)=1 ‫משוואת‬‫רקורסיה‬:F(N)=F(N-1)+F(N-2)
  37. 37. ‫דוגמא‬4: ‫פיבונאצ‬ ‫סדרה‬'‫י‬: ‫תזכורת‬: F(0)=1,F(1)=1, F(N)=F(N-1)+F(N-2) ‫פתרון‬‫רקורסיבי‬: ‫תנאי‬‫עצירה‬:F(0)=1,F(1)=1 ‫משוואת‬‫רקורסיה‬:F(N)=F(N-1)+F(N-2)
  38. 38. ‫דוגמא‬4: ‫סדרה‬‫פי‬‫ב‬‫ונצי‬: F(0)=1,F(1)=1, F(N)=F(N-1)+F(N-2) ‫פתרון‬‫לא‬‫רקורסיב‬‫י‬ http://www.codeskulptor.org/#user42_t2xQVItJnu_1.py
  39. 39. ‫סיכום‬ ‫לעצמה‬ ‫לקרוא‬ ‫יכולה‬ ‫פונקציה‬ ‫רקורסיה‬ ‫דרך‬ ‫בעיה‬ ‫לפתור‬ ‫קל‬ ‫לפעמים‬ ‫עצירה‬ ‫תנאי‬ ‫לציין‬ ‫חשוב‬ ‫רקורסיבי‬ ‫בפתרון‬ ‫חשוב‬‫להגדיר‬‫משוואת‬‫רקורסיה‬‫נכון‬

×