Logo

רד-בורד: ארכיון

ראשי > תיכנות > עצרת ב-שפת C..

07/05/2005 16:07:44 Analyst
שלום לכולם , אני מנסה להבין תקטע קוד הזה אך איני מצליח, האם מישהו יכול להסביר לי תקוד בצורה פשוטה ?? , ותודה

#include <conio.h>
#include <stdio.h>

long factorial (int n)
{
if (n > 0)
return (n * factorial (n-1));
else
return 1;
}
void main()
{
int n = 5;
printf ("The factorial of %d is: %ld", n, factorial(n));
}

ולמה התוצאה שהוא מחזיר לי זה 150 ?
08/05/2005 01:13:12 ziv
זה שמו... רקורסיה...
הרעיון המגניב הוא שהוא קורא לעצמו וכל פעם שהוא עושה return (n*factorial(n-1) הוא קורא לעצמו עד שמספר 1 קורא שוב ואז הוא קורא לאפס וזה עושה return 0 ואז כולם חוזרים אחורה אחורה אחורה אחורה אחורה אחורה אחורה אחורה אחורה (ספאם טוב) עד שמגיעים להתחלה וזהו יש תשובה שהיא אגב לא 150 אלא 120.[ההודעה נערכה על-ידי ziv ב-08/05/2005 01:14:30]
08/05/2005 03:17:12 Analyst
אה יפה אהבתי אבל תאמת לא הבנתי. :-\
08/05/2005 17:34:13 cp77fk4r
אני מציע לך ללמוד את הנושא "רקורסיה" - זה יעזור לך להבין.
08/05/2005 18:19:54 K4xZ
חח סיפי צודק.. אין דבר כזה לא הבנתי..
תלמד עד שידבקו לך הביצים לספר.
10/05/2005 19:34:21 Analyst
K4xZ טוב שמע אני לא חושב שאתה נולדת
Analyzer. אז זה לא כזה מצחיק , אני רק מתחיל לא יותר ואני מבקש ממך או מCP או מאדם מבין אחר שיעזור לי , לפחות שיגיד לי מה זה עצרת בכלל , לא קשור לשפת C.
אני רק צריך לדעת מה זה עצרת אז אם מישהו יכול להסביר לי אני יהיה מודה לו מאוד מאוד , ותודה כפרות שלי :)
10/05/2005 21:07:52 cp77fk4r
עצרת (סימן: !), היא פעולה חשבונית, הפעולה היא כפל של כל המספרים לפני N (כולל), לדוגמא:
4! יהיה שווה ל 1*2*3*4 = 24.
אבל מה הקשר..?
10/05/2005 21:15:02 Analyst
עזרת לי מאוד , תודה לך אחי.... :)
11/05/2005 00:12:05 Analyst
עכישו אני מתחיל להבין אך את הקוד עצמו קצת מסובך כמולר מה זה יעשה (n * factorial (n-1
נגיד N היה 5 אז זה אמור לעשות
5*1-5 ??
11/05/2005 08:07:05 Analyst
אה עכשיו הבנתי בעזרת ההסבר שלך CP.
תודה לך
13/05/2005 11:58:57 CoDeR
זה פותר את זה לפי שלבים...
נגיד 5.
5! = 5 * (5-1)! = 5 * 4!
4! = 4 * (4-1)! = 4 * 3!
וכך הלאה...
עד שבסוף מגיעים ל
5! = 5 * 4 * 3 * 2 * 1
13/05/2005 12:31:40 Analyst
CoDeR , פששש, תותח גדול אחי , כפרה עליך :)
עמודים: 1