רקורסיה
שלום רב אני מנסה לפתור משהו ואני לא מבין אותו התכנית היא כזאת
int func_A(int mat[][N],int n)
{
int i;
int num;
num=mat[n][n];
if(n==N)return (num);
else
for(i=n+1;i<N;i++)
num-=(mat[n]+mat[n]);
return (num+func_A(mat,++n));
}
int main()
{
int mat[N][N]={{10,1,1,1,1},{1,10,1,1,1},{1,1,10,1,1},{1,1,1,12,2},{1,1,5,1,11}};
int res=0;
res=func_A(mat,0);
printf("res=%d\n",res);
עכשיו שאני מריץ את התכנה כל פעם יש לי ערך שונה של res אני לא מבין למה הוא אמור להיות ערך מסויים קבוע
עוד שאלה רק שאני יבין כאשר יש קריאה רקורסיבית של ((return(num+(mat,++n בעצם אני מבין שהפונקצייה חוזרת פחות n אבל איך הnum משתלב פה איפה הוא נכנס למה אני בעצם מחבר אותו איך הוא מוחזר אם בכלל
בבקשה אם תוכלו לפרט לי שאני מבין אני מאוד אודה לכם תודה רבה רבה
שלום רב אני מנסה לפתור משהו ואני לא מבין אותו התכנית היא כזאת
int func_A(int mat[][N],int n)
{
int i;
int num;
num=mat[n][n];
if(n==N)return (num);
else
for(i=n+1;i<N;i++)
num-=(mat[n]+mat[n]);
return (num+func_A(mat,++n));
}
int main()
{
int mat[N][N]={{10,1,1,1,1},{1,10,1,1,1},{1,1,10,1,1},{1,1,1,12,2},{1,1,5,1,11}};
int res=0;
res=func_A(mat,0);
printf("res=%d\n",res);
עכשיו שאני מריץ את התכנה כל פעם יש לי ערך שונה של res אני לא מבין למה הוא אמור להיות ערך מסויים קבוע
עוד שאלה רק שאני יבין כאשר יש קריאה רקורסיבית של ((return(num+(mat,++n בעצם אני מבין שהפונקצייה חוזרת פחות n אבל איך הnum משתלב פה איפה הוא נכנס למה אני בעצם מחבר אותו איך הוא מוחזר אם בכלל
בבקשה אם תוכלו לפרט לי שאני מבין אני מאוד אודה לכם תודה רבה רבה