תוכן שנמחק תוכן שנוסף
Ybungalobill (שיחה | תרומות) תרגילים |
(אין הבדלים)
|
גרסה מ־17:04, 4 במרץ 2008
רקורסיה
מספרי פיבונאצ'י
בהנתן ההגדרה הרקורסיבית של מספרי פיבונאצ'י, חשוב על פתרון איטרטיבי. כתוב פונקציה לא רקורסיבית שתישם רעיון זה.
פתרון
אחת האפשרויות מוצגת כאן. פתרון זה מבוסס על שמירת האיבר הקודם ולפני הקודם במשתנים f0 ו-f1. כאשר מחושב האיבר הבא (f2) כבר אין צורך באיבר שלפני הקודם וניתן "לזוז" איבר אחד קדימה.
int Fibonacci(int n)
{
if(n <= 1)
return n;
int f0 = 1, f1 = 1;
for(int i = 2; i < n; i++)
{
int f2 = f1 + f2;
f0 = f1;
f1 = f2;
}
return f1;
}
עצרת
בפרק על לולאות כתבת תוכנית שמחשבת עצרת: . כתוב פונקציה שתחשב עצרת באמצעות אלגוריתם רקורסיבי.
פתרון
long Factorial(long n)
{
if(n <= 1)
return 1;
else
return Factorial(n-1)*n;
}