infoarena

infoarena - concursuri, probleme, evaluator, articole => Informatica => Subiect creat de: Euuuuu din Octombrie 24, 2016, 18:42:50



Titlul: Parcurgerea functiei fill
Scris de: Euuuuu din Octombrie 24, 2016, 18:42:50
Buna tuturor. Am o intrebare privind programul de mai jos:
Cod:
#include <iostream>
using namespace std;
int a[100][100],n,m,i,j,c=1;
void fill(int i,int j)
{if (a[i][j]==1)
{a[i][j]=c;
fill(i+1,j);
fill(i-1,j);
fill(i,j+1);
fill(i,j-1);
}}
int main()
{cout<<"n=";
cin>>n;
cout<<"m=";
cin>>m;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{cout<<"a["<<i<<"]["<<j<<"]=";
cin>>a[i][j];}
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(a[i][j]==1)
{c++;
fill(i,j);}
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
cout<<a[i][j];
return 0;}
Programul merge bine, dar problema mea este ca nu stiu cum sa parcurg partea asta:
Cod:
void fill(int i,int j)
{if (a[i][j]==1)
{a[i][j]=c;
fill(i+1,j);
fill(i-1,j);
fill(i,j+1);
fill(i,j-1);
}}
Nu ma intelegeti gresit, stiu la ce foloseste, dar nu stiu cum sa o parcurg, de exemplu, nu stiu cand iese din functie, cand revine la a doua apelare a functiei, and so on. Sunt disperata. Ma chinui la el de doua zile si tot nu imi dau seama cum. Imi puteti explica va rog frumos cum se parcurge? Multumesc mult!!