Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 13. 06. 2012 16:47

k-man
Příspěvky: 36
Reputace:   
 

nahradenie rekurzie zasobnikom C#

zdravim,

existuje nejaky obecny postup ako nahradit rekurziu zasobnikom ?

konkretne mam tuto rekurzivnu metodu

Code:

public void funkcia(object v)
        {
            .
            .
            .
            foreach (object obj in v.array)
            {
                if (...)
                {
                    funkcia(obj);
                    .
                    .
                    .
                }
                else if (...)
                {
                    .
                    .
                    .
                }
            }
        }

dakujem

Offline

 

#2 15. 06. 2012 19:41

Lokutus
Zelenáč
Příspěvky: 5
Reputace:   
 

Re: nahradenie rekurzie zasobnikom C#

↑ k-man:

Jen tam namátkou jsem střelil, netestoval jsem to. Ale myslím, že by to mělo splňovat záměr.

Code:

namespace MyStackApplication
{
    class MyStackClass
    {
        Stack<MyObject> stack = new Stack<MyObject>();

        public void Process()
        {
            MyObject[] mo = new MyObject()[];
            // fill MyObject array...

            stack.Push(mo[0]);
            while (stack.Count > 0)
            {
                MyObject tmpMo = stack.Pop();
                MyFunction(tmpMo);
            }
        }

        public void MyFunction(MyObject v)
        {
            foreach (MyObject obj in v.GetArray())
            {
                if (obj.SomeProperty == "")
                {
                    stack.Push(obj);
                }
                else
                {
                    // else...
                }
            }
        }
    }

    class MyObject
    {
        public string SomeProperty { get; set; }

        public Array GetArray()
        {
            // return another array
            return null;
        }
    }
}

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson