| dbpprop:abstract
|
- 'Recursion' in computer science is a way of thinking about and solving problems. In fact, recursion is one of the central ideas of computer science.
- Bei der rekursiven Programmierung ruft sich eine Prozedur, Funktion oder Methode in einem Computerprogramm selbst wieder auf. Auch der gegenseitige Aufruf stellt eine Rekursion dar.
- Un algorisme recursiu és aquell que fa ús de la recursivitat. En la pràctica, és un algorisme implementat en una funció que es crida a si mateixa. Li cal una condició de parada per a no entrar en un bucle infinit. Alguns algorismes recursius es poden reescriure com algorismes iteratius. Alguns exemples de recursivitat: En un text: Per a saber què és la recursivitat, primer s'ha de saber què és la recursivitat. En un acrònim: Què és GNU? → GNU No és Unix. Què és PHP? → PHP: Hipertext Preprocessor En matemàtiques: f(x) = x * f(x-1) En un algorisme: El càlcul del factorial d'un nombre es pot implementar amb un algorisme recursiu. En pseudocodi és: FUNCIÓ F := FACTORIAL SI N = 0 F := 1 SINÓ F := N * FACTORIAL (N - 1) FI_SI FI_FUNCIÓ És a dir: El factorial de zero val 1; per a nombres més grans que zero, el factorial del nombre és aquest mateix nombre multiplicat pel factorial del nombre sencer immediatament més petit.
- V programování je rekurzivní funkce metoda, kdy jedna a tatáž funkce volá před svým dokončením sama sebe s použitím nové sady parametrů. Příklad výpočtu faktoriálu čísla n. Protože faktoriál je definován takto n! = n * (n - 1) * (n - 2) * (n - 3) ... * 3 * 2 * 1 = n * (n - 1)! Funkce Faktorial používá při výpočtu rekurzivního algoritmu, který přesně odpovídá této definici výpočet faktoriálu pomocí rekurzivního volání funkce nfaktorial = Faktorial(n) function Faktorial (integer X) if X < 0 then return "Chybny argument" end if if X = 0 then return 1 end if return Faktorial(X-1) * X end function Použití rekurzivních funkcí může výrazně zjednodušit řešení úlohy. Má však různá úskalí, které je potřeba při implementaci rekurze vzít v úvahu. Každé volání rekurzivní funkce totiž zvyšuje hloubku zapouzdření funkce a vyžaduje zvláštní místo v paměti a čas procesoru. Nesprávné užití rekurze může způsobit obrovskou spotřebu paměti a velkou spotřebu času procesoru. V takovém případě je nutné se rekurzi vyhnout a nahradit ji jinou metodou - např. iterací. výpočet faktoriálu pomocí iterace function Faktorial (integer X) integer nfact if X < 0 then return "Chybny argument" end if nfact = 1 for i = 1 to X do nfact = nfact * i end for return nfact end function V případě chybného použití rekurzivního volání může dojít k nekonečné smyčce. V případě, že funkce volá sama sebe se stále stejnými parametry, vzniká při každém dalším volání nová sada lokálních proměnných a funkce se zanořuje stále hlouběji a každé další volání požaduje stále další prostor v paměti pro vytvoření další sady proměnných a uložení návratové adresy. V okamžiku, kdy se vyčerpá veškerá volná paměť počítače, dojde k havárii programu. Nevhodné může být použití rekurze i tehdy, když neúměrně zvýší složitost úlohy. Příkladem může být rekurzivní výpočet Fibonacciho posloupnosti, kde vede použití prosté rekurze k exponenciálně rostoucí složitosti výpočtu.
- Un algoritmo recursivo es un algoritmo que expresa la solución de un problema en términos de una llamada a sí mismo. La llamada a sí mismo se conoce como llamada recursiva o recurrente. <source lang=text>FUNCIÓN Factorial(n) VAR resultado: Entero SI (n<2) ENTONCES resultado = 1; SINO resultado = n * Factorial(n-1); FSI RETORNA resultado; FFUNCIÓN</source> Generalmente, si la primera llamada al subprograma se plantea sobre un problema de tamaño u orden N, cada nueva ejecución recurrente del mismo se planteará sobre problemas, de igual naturaleza que el original, pero de un tamaño menor que N. De esta forma, al ir reduciendo progresivamente la complejidad del problema a resolver, llegará un momento en que su resolución sea más o menos trivial (o, al menos, suficientemente manejable como para resolverlo de forma no recursiva). En esa situación diremos que estamos ante un caso base de la recursividad. Las claves para construir un subprograma recurrente son: Cada llamada recurrente se debería definir sobre un problema de menor complejidad (algo más fácil de resolver). Ha de existir al menos un caso base para evitar que la recurrencia sea infinita. Es frecuente que los algoritmos recurrentes sean más ineficientes en tiempo que los iterativos aunque suelen ser mucho más breves en espacio.
- Les algorithmes récursifs et les fonctions récursives sont fondamentaux en informatique. Un algorithme est dit récursif s'il s'appelle lui-même. Les premiers langages de programmation qui ont introduit la récursivité sont LISP et Algol 60 et maintenant tous les langages de programmation modernes proposent une implémentation de la récursivité. On oppose généralement les algorithmes récursifs aux algorithmes dits impératifs ou itératifs qui s'exécutent sans invoquer ou appeler explicitement l'algorithme lui-même.
- A recursividade na programação de computadores envolve a definição de uma função que pode invocar a si própria. Um exemplo de aplicação da recursividade pode ser encontrado nos analisadores gramaticais recursivos para linguagens de programação. A grande vantagem da recursão está na possibilidade de usar um programa de computador finito para definir, analisar ou produzir um estoque potencialmente infinito de sentenças, designs ou outros dados.
- En rekursiv algoritm anropar/använder sig själv. Ett bra exempel på detta är beräkning av fakultet (n!) Fakultet beräknas så här: n!=1*2*3... (n-2)*(n-1)*n Ex: 7! = 1*2*3*4*5*6*7 = 5040 Eftersom 7! är detsamma som 7*6! och 6! är detsamma som 6*5! kan man enkelt göra en rekursiv funktion så här: (I exemplet är Basic använt) FUNCTION FAK(X) IF X=0 THEN FAK=1 ELSE FAK=X*FAK(X-1) END IF END FUNCTION Raden FAK=1 är mycket viktig, annars kommer rekursionen att bli oändlig.
- 在计算机编程里,递归指的是一个过程:函数不断引用自身,直到引用的对象已知。 使用递归解决问题,思路清晰,代码少。但是在主流高级语言中(如C语言、Pascal语言等)使用递归算法要耗用更多的栈空间,所以在堆栈尺寸受限制时(如嵌入式系统或者内核态编程),应避免采用。所有的递归算法都可以改写成与之等价的非递归算法。 汉诺塔问题,是常見可用递归解决的问题,不過也有非递归的解法。 菲波纳契数列可用递归定義。 以下为求汉诺塔问题的Pascal程序: procedure Hanoi; begin if n<>1 then begin Hanoi(n-1,x,z,y); writeln(x,n,z); Hanoi(n-1,y,x,z); else writeln(x,n,z); end; end; 上述程序用接近自然语言的伪代码可表述如下: Hanoi 过程 (整型参数 n; 字符型参数 x,y,z); //注:n 代表本步中要处理的盘子数,x,y,z 分别表示 n 号盘子原来所在柱子、经由柱子、目标柱子 开始 如果 n 不为 1 ,那么:开始 调用 Hanoi 过程 (参数为 n-1,x,z,y); //注:这一步表示用本过程方法将剩余 n-1 个盘子从柱子 x 经由柱子 z 移动到柱子 y 输出 x,n,z; //注:表示将 n 号盘子从 x 移动到 z 调用 Hanoi 过程 (参数为 n-1,y,x,z); //注:这一步表示用本过程方法将剩余 n-1 个盘子从柱子 y 经由柱子 x 移动到柱子 z 结束; //以上程序段就完成了把 n 个盘子从柱子 x 经由柱子 y 移动到柱子 z 否则 输出 x,n,z; //注:若 n 为1 的话本句直接输出表示将 n 号盘子从 x 移动到 z 结束;
|
| rdfs:comment
|
- 'Recursion' in computer science is a way of thinking about and solving problems. In fact, recursion is one of the central ideas of computer science.
- Bei der rekursiven Programmierung ruft sich eine Prozedur, Funktion oder Methode in einem Computerprogramm selbst wieder auf. Auch der gegenseitige Aufruf stellt eine Rekursion dar.
- Un algorisme recursiu és aquell que fa ús de la recursivitat. En la pràctica, és un algorisme implementat en una funció que es crida a si mateixa. Li cal una condició de parada per a no entrar en un bucle infinit. Alguns algorismes recursius es poden reescriure com algorismes iteratius. Alguns exemples de recursivitat: En un text: Per a saber què és la recursivitat, primer s'ha de saber què és la recursivitat. En un acrònim: Què és GNU? → GNU No és Unix.
- V programování je rekurzivní funkce metoda, kdy jedna a tatáž funkce volá před svým dokončením sama sebe s použitím nové sady parametrů. Příklad výpočtu faktoriálu čísla n. Protože faktoriál je definován takto n! = n * (n - 1) * (n - 2) * (n - 3) ...
- Un algoritmo recursivo es un algoritmo que expresa la solución de un problema en términos de una llamada a sí mismo. La llamada a sí mismo se conoce como llamada recursiva o recurrente.
- Les algorithmes récursifs et les fonctions récursives sont fondamentaux en informatique. Un algorithme est dit récursif s'il s'appelle lui-même. Les premiers langages de programmation qui ont introduit la récursivité sont LISP et Algol 60 et maintenant tous les langages de programmation modernes proposent une implémentation de la récursivité.
- A recursividade na programação de computadores envolve a definição de uma função que pode invocar a si própria. Um exemplo de aplicação da recursividade pode ser encontrado nos analisadores gramaticais recursivos para linguagens de programação. A grande vantagem da recursão está na possibilidade de usar um programa de computador finito para definir, analisar ou produzir um estoque potencialmente infinito de sentenças, designs ou outros dados.
- En rekursiv algoritm anropar/använder sig själv. Ett bra exempel på detta är beräkning av fakultet (n!) Fakultet beräknas så här: n!=1*2*3... (n-2)*(n-1)*n Ex: 7! = 1*2*3*4*5*6*7 = 5040 Eftersom 7! är detsamma som 7*6! och 6! är detsamma som 6*5! kan man enkelt göra en rekursiv funktion så här: (I exemplet är Basic använt) FUNCTION FAK(X) IF X=0 THEN FAK=1 ELSE FAK=X*FAK(X-1) END IF END FUNCTION Raden FAK=1 är mycket viktig, annars kommer rekursionen att bli oändlig.
|