Rekurze II.
Již v dřívějším vydáním jsem mluvil o rekurzivních funkcích, které ať chceme nebo ne patří do programování jako vařečka do kuchyně.
Zde Vám uvedu pár příkladů rekurzivně řešených příkladů, které vás jistojistě zaujmou. Všechny ukázky, které se tu objeví jsem napsal já a tak se omlouvám, pokud by některá z nich by byla špatně. Nakonec bych chtěl uvést, že vše co je napsané
pomocí rekurze lze také napsat pomocí interace a naopak.
int najdi(int a, int b)
{
if (a > b)
return a;
else if (a < b)
return b;
}
int nejvetsi(int a, int b, int i)
{
if ((a % i == 0) && (b % i == 0))
return i;
else
return nejvetsi(a, b, i - 1);
}
Největší společný dělitel
int faktorial(int cislo)
{
if(cislo<=1)
return cislo;
else
return cislo*faktorial(cislo-1);
}
Faktoriál
int minimum(int[] pole, cislo,pomocna)
{
if(pomocna>(pole.Lenght))
return cislo;
else
if(cislo>pole[pomocna])
{
cislo=pole[pomocna];
return minimum(pole,cislo,pomocna+1);
}
else
return minimum(pole,cislo,pomocna+1);
}
Minimum v poli
int fibo(int cislo)
{
if (cislo < 2)
return cislo;
else
return fibo(cislo - 1) + fibo(cislo - 2);
}
Fibonacciho posloupnost
int soucet(int cislo,int maximum)
{
if (cislo > maximum)
return 0;
else
return cislo + soucet(cislo + 1,maximum);
}
Součet řady
int cetnost(int[] pole,int pricti, int cislo, int soucet)
{
if (pricti > pole.Length)
return soucet;
else
{
if (pole == cislo)
return cetnost(pole,pricti+1,cislo,soucet+1);
else
return cetnost(pole,pricti+1,cislo,soucet);
}
}
Četnost