Kivételkezelés trükkösen

Milyen feladatot lát el az alábbi függvény?

 

void Func(int n)
{
 if (n <= 1) 
   throw 1;
 
 try {
      Func(n - 1);
     }
 catch (int n1) {
                 try {
                      Func(n - 2);
                     }
                 catch (int n2) {
                                 throw n1 + n2;
                                }
                }
}

 



A megoldásért kattints ide!

Bár a függvény void típusú, a maga módján mégis visszaad egy értéket a kivétel dobásával (ezt persze csak akkor tudjuk rendesen felhasználni, ha a függvényt egy try blokkon belül hívjuk meg és elkapjuk a kivételt). Ha jobban megnézzük, láthatjuk, hogy az n-edik Fibonacci szám értékét adja vissza. Rendes függvényként így nézne ki:

 

int Fibonacci(int n)
{
 if (n <= 1) 
   return 1;
 else 
   return Fibonacci(n - 1) + Fibonacci(n - 2);
} 

 




2008.02.08. 18:31:45 |  Permalink  |  Hozzászólások száma: 0  |  Tárgyszavak: Fejtörők


Írja meg Ön is véleményét!


Hozzászólásokat csak regisztrált, bejelentkezett felhasználóktól tudunk elfogadni!

Hozzászólások