Recursion (computer science) (original) (raw)

About DBpedia

Un algorithme récursif est un algorithme qui résout un problème en calculant des solutions d'instances plus petites du même problème. L'approche récursive est un des concepts de base en informatique. Les premiers langages de programmation qui ont autorisé l'emploi de la récursivité sont LISP et Algol 60. Depuis, tous les langages de programmation généraux réalisent une implémentation de la récursivité. Pour répéter des opérations, typiquement, un algorithme récursif s'appelle lui-même. On oppose généralement les algorithmes récursifs aux algorithmes itératifs, qui eux, utilisent plutôt des boucles pour et des boucles tant que, pour répéter des opérations.

thumbnail

Property Value
dbo:abstract Rekurze je programovací technika, při níž je určitá procedura nebo funkce znovu volána dříve, než je dokončeno její předchozí volání. Použití rekurze může u některých úloh vést ke stručnému a matematicky elegantnímu řešení. Nevede ale nutně k řešení optimálnímu. Použití rekurze vede obvykle k jinému rozložení využití prostředků přidělených programu operačním systémem, případně k jejich rychlejšímu vyčerpání, proto se při optimalizaci programu většinou snažíme rekurzi omezit nebo odstranit. Některé (zejména starší) programovací jazyky a některé překladače rekurzi neumožňují; jiné vyžadují, aby programátor explicitně uvedl, že je daná procedura nebo funkce rekurzivní. Jednou ze základních součástí většiny programovacích jazyků jsou cykly. Existují však i jazyky, které místo cyklů využívají právě rekurzi. Jedná se například o Lisp či Prolog. (cs) 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 . 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 (SENCER:N)SI N = 0F := 1SINÓF := N * FACTORIAL (N - 1)FI_SIFI_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. (ca) العودية أو الاستدعاء الذاتي في علم الحاسوب هو طريقة التي فيها الحل لمسألة ما يعتمد على حلول مسائل أصغر من نفس النوع.بالإمكان تطبيق هذا النهج على أنواع عديدة من المسائل، وهو واحد من الأفكار المركزية بعلم الحاسوب. تدعم أغلب لغات البرمجة الاستدعاء الذاتي عن طريق السماح لدالة أن تستدعي نفسها ضمن نص البرنامج نفسه. بعض لغات البرمجة الوظيفة لا تعرّف مبان تكرارية (looping constructs) ولكن تعتمد فقط على الاستدعاء الذاتي لتكرار تنفيذ كود معين. برهنت نظرية الحاسوبية أن اللغات التي تستخدم الاستدعاء الذاتي فقط معادلة رياضياً للغات الحتمية، بمعنى أنه باستطاعتهم حل أي نوع من المسائل دون الحاجة لمباني التحكم النموذجية مثل حلقات "while" أو "for". (ar) Bei der rekursiven Programmierung ruft sich eine Prozedur, Funktion oder Methode in einem Computerprogramm selbst wieder auf (d. h. enthält eine Rekursion). Auch der gegenseitige Aufruf stellt eine Rekursion dar. Wichtig bei der rekursiven Programmierung ist eine Abbruchbedingung in dieser Funktion, weil sich das rekursive Programm sonst theoretisch unendlich oft selbst aufrufen würde. Rekursive Programmierung kann unter anderem in prozeduralen und objektorientierten Programmiersprachen angewandt werden. Obwohl diese Sprachen in ihrem Sprachstandard die Rekursion ausdrücklich zulassen, stellen Selbstaufrufe und gegenseitige Aufrufe hier (aufgrund der verwendeten Programmierparadigmen) jedoch eher die Ausnahme dar. Auch wenn in der Praxis zur Verbesserung des Programmierstils auch hier durchaus häufig auf Rekursion zurückgegriffen wird, sind die meisten Funktionen in diesen Sprachen doch rein iterativ. In einigen Sprachen, wie z. B. in manchen funktionalen Programmiersprachen oder Makroprozessoren, muss die rekursive Programmiermethode zwingend verwendet werden, da iterative Sprachkonstrukte fehlen. (de) Para un tratamiento más general de los fenómenos recursivos, ver el artículo de Recursión. Recursión es, en ciencias de la computación, una forma de atajar y solventar problemas. De hecho, recursión es una de las ideas centrales de ciencia de computación.​ Resolver un problema mediante recursión significa que la solución depende de las soluciones de pequeñas instancias del mismo problema.​ El poder de la recursión evidentemente se fundamenta en la posibilidad de definir un conjunto infinito de objetos con una declaración finita. Igualmente, un número infinito de operaciones computacionales puede describirse con un programa recursivo finito, incluso en el caso de que este programa no contenga repeticiones explícitas."​ La mayoría de los lenguajes de programación dan soporte a la recursión permitiendo a una función llamarse a sí misma desde el texto del programa. Los lenguajes imperativos definen las estructuras de loops como while y for que son usadas para realizar tareas repetitivas. Algunos lenguajes de programación funcionales no definen estructuras de loops sino que posibilitan la recursión llamando código de forma repetitiva. La teoría de la computabilidad ha demostrado que estos dos tipos de lenguajes son matemáticamente equivalentes, es decir que pueden resolver los mismos tipos de problemas, aunque los lenguajes funcionales carezcan de las típicas estructuras while y for. (es) Un algorithme récursif est un algorithme qui résout un problème en calculant des solutions d'instances plus petites du même problème. L'approche récursive est un des concepts de base en informatique. Les premiers langages de programmation qui ont autorisé l'emploi de la récursivité sont LISP et Algol 60. Depuis, tous les langages de programmation généraux réalisent une implémentation de la récursivité. Pour répéter des opérations, typiquement, un algorithme récursif s'appelle lui-même. On oppose généralement les algorithmes récursifs aux algorithmes itératifs, qui eux, utilisent plutôt des boucles pour et des boucles tant que, pour répéter des opérations. (fr) In computer science, recursion is a method of solving a computational problem where the solution depends on solutions to smaller instances of the same problem. Recursion solves such recursive problems by using functions that call themselves from within their own code. The approach can be applied to many types of problems, and recursion is one of the central ideas of computer science. The power of recursion evidently lies in the possibility of defining an infinite set of objects by a finite statement. In the same manner, an infinite number of computations can be described by a finite recursive program, even if this program contains no explicit repetitions. — Niklaus Wirth, Algorithms + Data Structures = Programs, 1976 Most computer programming languages support recursion by allowing a function to call itself from within its own code. Some functional programming languages (for instance, Clojure) do not define any looping constructs but rely solely on recursion to repeatedly call code. It is proved in computability theory that these recursive-only languages are Turing complete; this means that they are as powerful (they can be used to solve the same problems) as imperative languages based on control structures such as while and for. Repeatedly calling a function from within itself may cause the call stack to have a size equal to the sum of the input sizes of all involved calls. It follows that, for problems that can be solved easily by iteration, recursion is generally less efficient, and, for large problems, it is fundamental to use optimization techniques such as tail call optimization. (en) In informatica viene detto algoritmo ricorsivo un algoritmo espresso in termini di se stesso, ovvero in cui l'esecuzione dell'algoritmo su un insieme di dati comporta la semplificazione o suddivisione dell'insieme di dati e l'applicazione dello stesso algoritmo agli insiemi di dati semplificati. Tale tecnica risulta particolarmente utile per eseguire dei compiti ripetitivi su di un set di variabili in input. L'algoritmo richiama se stesso generando una sequenza di chiamate che ha termine al verificarsi di una condizione particolare che viene chiamata condizione di terminazione, che in genere si ha con particolari valori di input. La tecnica ricorsiva permette di scrivere algoritmi eleganti e sintetici per molti tipi di problemi comuni, anche se non sempre le soluzioni ricorsive sono le più efficienti. Questo è dovuto al fatto che comunemente la ricorsione viene implementata utilizzando le funzioni, e che l'invocazione di una funzione ha un costo rilevante, e questo rende più efficienti gli algoritmi iterativi. In alcuni casi la ricorsione è altrettanto efficiente di un ciclo iterativo: linguaggi dei paradigmi funzionali o logici tipicamente non hanno il concetto di ciclo ed usano la ricorsione ottimizzando automaticamente. (it) 再帰(さいき 英:Recursion,Recursive)は、ある物事について記述する際に、記述しているもの自体への参照が、その記述中にあらわれることをいう。 再帰は、言語学から論理学に至る様々な分野で使用されている。最も一般的な適用は数学と計算機科学で、定義されている関数がそれ自身の定義の中で参照利用されている場合を言う。 (ja) ( 수학의 재귀 함수에 대해서는 μ-재귀 함수 문서를 참고하십시오.) 컴퓨터 과학에 있어서 재귀(再歸, Recursion)는 자신을 정의할 때 자기 자신을 재참조하는 방법을 뜻하며, 이를 프로그래밍에 적용한 재귀 호출(Recursive call)의 형태로 많이 사용된다. 또 사진이나 그림 등에서 재귀의 형태를 사용하는 경우도 있다. (ko) Recursie in informatica en computertechniek is een methode waar de oplossing van een probleem afhangt van oplossingen van kleinere identieke problemen, in tegenstelling tot iteratie. Deze benadering kan toegepast worden op veel soorten problemen en recursie is een basis van de informatietechnologie. Recursie komt in de wiskunde en in de informatica veel voor. Bewerkingen op getallen kunnen bijvoorbeeld worden geschreven als willekeurig grote samenstellingen van getallen en bewerkingen zoals optellen, aftrekken, vermenigvuldigen en delen. Veel wiskundige formalismen en computertalen worden daarom met recursieve grammatica's beschreven. (nl) En rekursiv algoritm anropar sig själv. Ett exempel på ett sådant anrop är en funktion för beräkning av fakultet. n! = n·(n - 1)! = n·(n - 1)·(n - 2)! = ... , Då kan algoritmen skrivas som en rekursiv funktion, function fakultet (n)if n = 0 thenfakultet = 1 -- bassteg/terminerande anropelsefakultet = n · fakultet (n - 1) -- rekursivt anropend ifend function Raden fakultet = 1 är ett bassteg som terminerar anropskedjan vilket är nödvändigt för att undvika en oändlig följd av anrop. Ett problem med rekursiva funktioner är att de kan uppta för stor del av datorns minne genom för långa anropskedjor. Ett sätt att lösa detta är genom svansrekursion, eller genom att skriva den rekursiva funktionen som en slinga med ackumulator. De rekursiva fallens/stegens utförda arbete kan ses som sätt att bryta ner komplexa ingångsvärden till enklare sådana. I en rätt utformad rekursiv algoritm måste med varje rekursivt steg det ingående problemet förenklas på ett sådant sätt att basfallen till slut uppnås. Underlåtenhet att skriva ett basfall, eller att felaktigt testa för basfallet, kan orsaka en oändlig anropskedja. (sv) Em ciência da computação, a recursividade é a definição de uma sub-rotina (função ou método) que pode invocar a si mesma. Um exemplo de aplicação da recursividade pode ser encontrado nos analisadores sintáticos 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. (pt) Рекурси́вная фу́нкция (от лат. recursio — возвращение) — это числовая функция числового аргумента, которая в своей записи содержит себя же. Такая запись позволяет вычислять значения на основе значений , подобно рассуждению по индукции. Чтобы вычисление завершалось для любого , необходимо, чтобы для некоторых функция была определена нерекурсивно (например, для ). (ru) 遞迴(英語:recursion)在電腦科學中是指一種通過重複將問題分解為同類的子問題而解決問題的方法。 遞迴式方法可以被用於解決很多的電腦科學問題,因此它是電腦科學中十分重要的一個概念。 絕大多數程式語言支援函式的自呼叫,在這些語言中函式可以通過呼叫自身來進行遞迴。計算理論可以證明遞迴的作用可以完全取代迴圈,因此有很多在函數程式語言(如Scheme)中用递归来取代循环的例子。 電腦科學家尼克勞斯·維爾特如此描述遞迴: 遞迴的強大之處在於它允許使用者用有限的語句描述無限的物件。因此,在電腦科學中,遞迴可以被用來描述無限步的運算,儘管描述運算的程式是有限的。 ——尼克勞斯·維爾特 (zh) Процедура рекурсивна — процедура в програмуванні, у тілі якої знаходиться явне звернення до неї самої, або через іншу процедуру. Застосування рекурсивних процедур, у багатьох випадках допомагає скоротити алгоритми, зробити їхню форму компактнішою. (uk)
dbo:thumbnail wiki-commons:Special:FilePath/RecursiveTree.jpg?width=300
dbo:wikiPageExternalLink https://archive.org/details/thinkingrecursiv00robe_0 https://books.google.com/books%3Fid=9pY4DwAAQBAJ&pg=PA1 https://books.google.com/books%3Fid=yCk2mWy9inMC http://www.htdp.org/2003-09-26/Book/
dbo:wikiPageID 4044867 (xsd:integer)
dbo:wikiPageLength 58907 (xsd:nonNegativeInteger)
dbo:wikiPageRevisionID 1123455633 (xsd:integer)
dbo:wikiPageWikiLink dbr:Cambridge_University_Press dbr:Prime_numbers dbr:Primitive_recursive_function dbr:Programmer dbr:Python_(programming_language) dbr:Quicksort dbr:Scheme_(programming_language) dbr:Memoization dbr:Tail_call dbr:Process_state dbr:Binary_search_tree dbr:Definition dbr:Algorithm dbr:Algorithmic_efficiency dbr:Anonymous_recursion dbc:Recursion dbr:How_to_Design_Programs dbr:Pathological_(mathematics) dbr:Remainder dbr:Μ-recursive_function dbr:Depth-first_search dbr:Infinite_loop dbr:Insertion_sort dbr:Interpreter_(computing) dbr:Sierpiński_curve dbr:Short-circuit_evaluation dbr:Macdonald_&_Co._(Publishers)_Ltd. dbr:Perfect_binary_tree dbr:Compiler dbr:Computability_theory dbr:Memory_management dbr:Wildmat dbr:Clojure dbr:Coinduction dbr:Function_(computer_science) dbr:Greatest_common_divisor dbr:Control_flow dbr:Corecursion dbr:Tail_call_elimination dbr:Anonymous_function dbr:Logic dbr:MIT_Press dbr:Call_stack dbr:Stack-based_memory_allocation dbr:Stream_(computer_science) dbr:Structural_induction dbr:Computational_problem dbr:Computer_program dbr:Computer_science dbr:Functional_programming dbr:Stack_overflow dbr:Tak_(function) dbr:Matching_wildcards dbr:McCarthy_91_function dbr:Mutual_recursion dbr:Backus–Naur_form dbc:Articles_with_example_pseudocode dbr:CRC_Press dbr:C_(programming_language) dbr:Adaptive_quadrature dbc:Programming_idioms dbc:Subroutines dbr:Threaded_binary_tree dbr:Time_complexity dbr:Timsort dbr:Tree_(data_structure) dbr:Tree_traversal dbr:Data dbr:Wiley_(publisher) dbr:Divide-and-conquer_algorithm dbr:Lazy_evaluation dbr:Linked_list dbr:List_(abstract_data_type) dbr:Dynamic_programming dbr:E_(mathematical_constant) dbr:Euclidean_algorithm dbr:Exception_handling dbr:For_loop dbr:Niklaus_Wirth dbr:Parameter dbr:Fold_(higher-order_function) dbr:Fractal dbr:Goto dbr:Iteration dbr:Functional_programming_language dbr:Runtime_environment dbr:Process_(computing) dbr:Profiling_(computer_programming) dbr:Recurrence_relation dbr:Recursion dbr:Haskell_(programming_language) dbr:Heap_(programming) dbr:Java_(programming_language) dbc:Theoretical_computer_science dbr:Accessor dbr:Ackermann_function dbc:Computability_theory dbr:Big_O_notation dbr:Tail_recursion dbr:Hierarchical_and_recursive_queries_in_SQL dbr:Termination_analysis dbr:While_loop dbr:Wrapper_function dbr:Recursive_data_type dbr:Stack_(data_structure) dbr:Software_testing dbr:Tiled_merge_sort dbr:Instance_(computer_science) dbr:Integers dbr:Krauss_matching_wildcards_algorithm dbr:Merge_sort dbr:Mergesort dbr:Natural_number dbr:Natural_numbers dbr:Newton's_method dbr:Open_recursion dbr:Kleene–Rosser_paradox dbr:Lookup_table dbr:Loop_variant dbr:Order_of_magnitude dbr:Rich_Salz dbr:Series_(mathematics) dbr:Infinite_loops dbr:Nested_function dbr:Factorial dbr:Imperative_programming dbr:Programming_language dbr:Stack_buffer_overflow dbr:Malware dbr:Pseudocode dbr:Sorted_array dbr:Turing_completeness dbr:Filesystem dbr:Statement_(programming) dbr:Functional_language dbr:Functional_languages dbr:Daemon_(computer_software) dbr:Divide-and-conquer_method dbr:Imperative_language dbr:Self_reference dbr:Pass-by-reference dbr:Binary_search dbr:Expression_(programming) dbr:Preorder_traversal dbr:Trivial_(mathematics) dbr:Tail-recursive dbr:File:Tower_of_Hanoi.jpeg dbr:File:Recursive1.svg dbr:File:Recursive2.svg dbr:File:RecursiveTree.JPG
dbp:author dbr:Niklaus_Wirth Matthias Felleisen (en) Felleisen, Findler, Flatt, and Krishnaurthi (en)
dbp:cs1Dates y (en)
dbp:date March 2020 (en)
dbp:source Advanced Functional Programming, 2002 (en) Algorithms + Data Structures = Programs, 1976 (en) How to Design Programs, 2001 (en)
dbp:text [Functions that consume structured data] typically decompose their arguments into their immediate structural components and then process those components. If one of the immediate components belongs to the same class of data as the input, the function is recursive. For that reason, we refer to these functions as RECURSIVE FUNCTIONS. (en) Many well-known recursive algorithms generate an entirely new piece of data from the given data and recur on it. HtDP (How to Design Programs) refers to this kind as generative recursion. Examples of generative recursion include: gcd, quicksort, binary search, mergesort, Newton's method, fractals, and adaptive integration. (en) The power of recursion evidently lies in the possibility of defining an infinite set of objects by a finite statement. In the same manner, an infinite number of computations can be described by a finite recursive program, even if this program contains no explicit repetitions. (en)
dbp:wikiPageUsesTemplate dbt:Programming_paradigms dbt:How? dbt:! dbt:About dbt:Anchor dbt:CN dbt:Cite_book dbt:Cite_journal dbt:Code dbt:Further dbt:Main dbt:Math dbt:Mvar dbt:Quote dbt:Refbegin dbt:Refend dbt:Reflist dbt:See_also dbt:Short_description dbt:Sic dbt:Use_dmy_dates dbt:Visible_anchor dbt:Toclimit dbt:Algorithmic_paradigms
dcterms:subject dbc:Recursion dbc:Articles_with_example_pseudocode dbc:Programming_idioms dbc:Subroutines dbc:Theoretical_computer_science dbc:Computability_theory
gold:hypernym dbr:Method
rdf:type owl:Thing dbo:Software yago:WikicatSubroutines yago:Abstraction100002137 yago:Act100030358 yago:Activity100407535 yago:Algorithm105847438 yago:Code106355894 yago:CodingSystem106353757 yago:Communication100033020 yago:Event100029378 yago:ExpressiveStyle107066659 yago:Formulation107069948 yago:GrammaticalRelation113796779 yago:Inflection113803782 yago:LinguisticRelation113797142 yago:Paradigm113804375 yago:Parlance107081177 yago:Procedure101023820 yago:PsychologicalFeature100023100 yago:Relation100031921 yago:Writing106359877 yago:WrittenCommunication106349220 yago:YagoPermanentlyLocatedEntity yago:Routine106582403 yago:Rule105846932 yago:Software106566077 yago:WikicatAlgorithms yago:WikicatProgrammingIdioms yago:WikicatProgrammingParadigms
rdfs:comment Un algorithme récursif est un algorithme qui résout un problème en calculant des solutions d'instances plus petites du même problème. L'approche récursive est un des concepts de base en informatique. Les premiers langages de programmation qui ont autorisé l'emploi de la récursivité sont LISP et Algol 60. Depuis, tous les langages de programmation généraux réalisent une implémentation de la récursivité. Pour répéter des opérations, typiquement, un algorithme récursif s'appelle lui-même. On oppose généralement les algorithmes récursifs aux algorithmes itératifs, qui eux, utilisent plutôt des boucles pour et des boucles tant que, pour répéter des opérations. (fr) 再帰(さいき 英:Recursion,Recursive)は、ある物事について記述する際に、記述しているもの自体への参照が、その記述中にあらわれることをいう。 再帰は、言語学から論理学に至る様々な分野で使用されている。最も一般的な適用は数学と計算機科学で、定義されている関数がそれ自身の定義の中で参照利用されている場合を言う。 (ja) ( 수학의 재귀 함수에 대해서는 μ-재귀 함수 문서를 참고하십시오.) 컴퓨터 과학에 있어서 재귀(再歸, Recursion)는 자신을 정의할 때 자기 자신을 재참조하는 방법을 뜻하며, 이를 프로그래밍에 적용한 재귀 호출(Recursive call)의 형태로 많이 사용된다. 또 사진이나 그림 등에서 재귀의 형태를 사용하는 경우도 있다. (ko) Recursie in informatica en computertechniek is een methode waar de oplossing van een probleem afhangt van oplossingen van kleinere identieke problemen, in tegenstelling tot iteratie. Deze benadering kan toegepast worden op veel soorten problemen en recursie is een basis van de informatietechnologie. Recursie komt in de wiskunde en in de informatica veel voor. Bewerkingen op getallen kunnen bijvoorbeeld worden geschreven als willekeurig grote samenstellingen van getallen en bewerkingen zoals optellen, aftrekken, vermenigvuldigen en delen. Veel wiskundige formalismen en computertalen worden daarom met recursieve grammatica's beschreven. (nl) Em ciência da computação, a recursividade é a definição de uma sub-rotina (função ou método) que pode invocar a si mesma. Um exemplo de aplicação da recursividade pode ser encontrado nos analisadores sintáticos 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. (pt) Рекурси́вная фу́нкция (от лат. recursio — возвращение) — это числовая функция числового аргумента, которая в своей записи содержит себя же. Такая запись позволяет вычислять значения на основе значений , подобно рассуждению по индукции. Чтобы вычисление завершалось для любого , необходимо, чтобы для некоторых функция была определена нерекурсивно (например, для ). (ru) 遞迴(英語:recursion)在電腦科學中是指一種通過重複將問題分解為同類的子問題而解決問題的方法。 遞迴式方法可以被用於解決很多的電腦科學問題,因此它是電腦科學中十分重要的一個概念。 絕大多數程式語言支援函式的自呼叫,在這些語言中函式可以通過呼叫自身來進行遞迴。計算理論可以證明遞迴的作用可以完全取代迴圈,因此有很多在函數程式語言(如Scheme)中用递归来取代循环的例子。 電腦科學家尼克勞斯·維爾特如此描述遞迴: 遞迴的強大之處在於它允許使用者用有限的語句描述無限的物件。因此,在電腦科學中,遞迴可以被用來描述無限步的運算,儘管描述運算的程式是有限的。 ——尼克勞斯·維爾特 (zh) Процедура рекурсивна — процедура в програмуванні, у тілі якої знаходиться явне звернення до неї самої, або через іншу процедуру. Застосування рекурсивних процедур, у багатьох випадках допомагає скоротити алгоритми, зробити їхню форму компактнішою. (uk) العودية أو الاستدعاء الذاتي في علم الحاسوب هو طريقة التي فيها الحل لمسألة ما يعتمد على حلول مسائل أصغر من نفس النوع.بالإمكان تطبيق هذا النهج على أنواع عديدة من المسائل، وهو واحد من الأفكار المركزية بعلم الحاسوب. (ar) 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 . Alguns exemples de recursivitat: É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. (ca) Rekurze je programovací technika, při níž je určitá procedura nebo funkce znovu volána dříve, než je dokončeno její předchozí volání. Použití rekurze může u některých úloh vést ke stručnému a matematicky elegantnímu řešení. Nevede ale nutně k řešení optimálnímu. Použití rekurze vede obvykle k jinému rozložení využití prostředků přidělených programu operačním systémem, případně k jejich rychlejšímu vyčerpání, proto se při optimalizaci programu většinou snažíme rekurzi omezit nebo odstranit. (cs) Para un tratamiento más general de los fenómenos recursivos, ver el artículo de Recursión. Recursión es, en ciencias de la computación, una forma de atajar y solventar problemas. De hecho, recursión es una de las ideas centrales de ciencia de computación.​ Resolver un problema mediante recursión significa que la solución depende de las soluciones de pequeñas instancias del mismo problema.​ (es) Bei der rekursiven Programmierung ruft sich eine Prozedur, Funktion oder Methode in einem Computerprogramm selbst wieder auf (d. h. enthält eine Rekursion). Auch der gegenseitige Aufruf stellt eine Rekursion dar. Wichtig bei der rekursiven Programmierung ist eine Abbruchbedingung in dieser Funktion, weil sich das rekursive Programm sonst theoretisch unendlich oft selbst aufrufen würde. In einigen Sprachen, wie z. B. in manchen funktionalen Programmiersprachen oder Makroprozessoren, muss die rekursive Programmiermethode zwingend verwendet werden, da iterative Sprachkonstrukte fehlen. (de) In computer science, recursion is a method of solving a computational problem where the solution depends on solutions to smaller instances of the same problem. Recursion solves such recursive problems by using functions that call themselves from within their own code. The approach can be applied to many types of problems, and recursion is one of the central ideas of computer science. — Niklaus Wirth, Algorithms + Data Structures = Programs, 1976 (en) In informatica viene detto algoritmo ricorsivo un algoritmo espresso in termini di se stesso, ovvero in cui l'esecuzione dell'algoritmo su un insieme di dati comporta la semplificazione o suddivisione dell'insieme di dati e l'applicazione dello stesso algoritmo agli insiemi di dati semplificati. In alcuni casi la ricorsione è altrettanto efficiente di un ciclo iterativo: linguaggi dei paradigmi funzionali o logici tipicamente non hanno il concetto di ciclo ed usano la ricorsione ottimizzando automaticamente. (it) En rekursiv algoritm anropar sig själv. Ett exempel på ett sådant anrop är en funktion för beräkning av fakultet. n! = n·(n - 1)! = n·(n - 1)·(n - 2)! = ... , Då kan algoritmen skrivas som en rekursiv funktion, function fakultet (n)if n = 0 thenfakultet = 1 -- bassteg/terminerande anropelsefakultet = n · fakultet (n - 1) -- rekursivt anropend ifend function (sv)
rdfs:label عودية (علم الحاسوب) (ar) Algorisme recursiu (ca) Rekurze (programování) (cs) Rekursive Programmierung (de) Recursión (ciencias de computación) (es) Algorithme récursif (fr) Algoritmo ricorsivo (it) 再帰 (ja) 재귀 (컴퓨터 과학) (ko) Recursie (informatica) (nl) Recursion (computer science) (en) Recursividade (ciência da computação) (pt) Рекурсивная функция (ru) Rekursiv algoritm (sv) Рекурсія (програмування) (uk) 递归 (计算机科学) (zh)
rdfs:seeAlso dbr:Structural_recursion
owl:sameAs freebase:Recursion (computer science) dbpedia-es:Recursion (computer science) dbpedia-pt:Recursion (computer science) yago-res:Recursion (computer science) wikidata:Recursion (computer science) dbpedia-ar:Recursion (computer science) dbpedia-bar:Recursion (computer science) dbpedia-ca:Recursion (computer science) dbpedia-cs:Recursion (computer science) http://cv.dbpedia.org/resource/Рекурсивлă_функци dbpedia-de:Recursion (computer science) dbpedia-fa:Recursion (computer science) dbpedia-fi:Recursion (computer science) dbpedia-fr:Recursion (computer science) http://hi.dbpedia.org/resource/पुनरावृत्ति_(कंप्यूटर_विज्ञान) http://hy.dbpedia.org/resource/Ռեկուրսիա_(ինֆորմատիկա) dbpedia-it:Recursion (computer science) dbpedia-ja:Recursion (computer science) dbpedia-kk:Recursion (computer science) dbpedia-ko:Recursion (computer science) dbpedia-nl:Recursion (computer science) dbpedia-ru:Recursion (computer science) dbpedia-simple:Recursion (computer science) dbpedia-sk:Recursion (computer science) dbpedia-sr:Recursion (computer science) dbpedia-sv:Recursion (computer science) dbpedia-uk:Recursion (computer science) dbpedia-vi:Recursion (computer science) dbpedia-zh:Recursion (computer science) https://global.dbpedia.org/id/2Ucr5
prov:wasDerivedFrom wikipedia-en:Recursion_(computer_science)?oldid=1123455633&ns=0
foaf:depiction wiki-commons:Special:FilePath/Tower_of_Hanoi.jpeg wiki-commons:Special:FilePath/Recursive1.svg wiki-commons:Special:FilePath/Recursive2.svg wiki-commons:Special:FilePath/RecursiveTree.jpg
foaf:isPrimaryTopicOf wikipedia-en:Recursion_(computer_science)
is dbo:wikiPageDisambiguates of dbr:Recursion_(disambiguation)
is dbo:wikiPageRedirects of dbr:Indirect_recursion dbr:Generative_recursion dbr:Arm's-length_recursion dbr:Depth_of_recursion dbr:Direct_recursion dbr:Termination_of_recursive_functions dbr:Recursion_termination dbr:Recursive_function_(programming) dbr:Multiple_recursion dbr:Single_recursion dbr:Recursion(computer_science) dbr:Recursive_(computer_science) dbr:Recursive_algorithm dbr:Recursive_call dbr:Recursive_calls dbr:Recursive_limit dbr:Recursive_loop
is dbo:wikiPageWikiLink of dbr:C_syntax dbr:Bendix_G-20 dbr:Primitive_recursive_function dbr:Program_optimization dbr:Programming_paradigm dbr:Quicksort dbr:Robocopy dbr:Scala_(programming_language) dbr:Entry_point dbr:List_of_computability_and_complexity_topics dbr:Nabla_symbol dbr:Nondeterministic_finite_automaton dbr:Tail_call dbr:ProbeVue dbr:Basic4GL dbr:Binary_search_tree dbr:Binary_tree dbr:Block_sort dbr:Declarative_programming dbr:Algoid_(programming_language) dbr:Algorithm dbr:Algorithmic_efficiency dbr:Anonymous_recursion dbr:Anti-genre dbr:Hyperoperation dbr:Joyce_(programming_language) dbr:Pentium_FDIV_bug dbr:Per_Brinch_Hansen dbr:Regular_expression dbr:Unbounded_nondeterminism dbr:Vadalog dbr:Von_Neumann–Bernays–Gödel_set_theory dbr:Include_guard dbr:Index_of_computing_articles dbr:Index_of_philosophy_articles_(R–Z) dbr:Indirect_recursion dbr:Infinite-order_triangular_tiling dbr:Infinite_loop dbr:Information_Processing_Language dbr:Inline_expansion dbr:Inline_function dbr:Integer_square_root dbr:Intel_8086 dbr:Sierpiński_curve dbr:Let_expression dbr:SimRank dbr:Comparison_of_programming_paradigms dbr:Computability_theory dbr:Course-of-values_recursion dbr:Anaphoric_macro dbr:Mathematical_induction dbr:Memory_management dbr:Rust_(programming_language) dbr:Chemical_graph_generator dbr:Elliptic_curve_primality dbr:Estrin's_scheme dbr:Generative_music dbr:Generative_recursion dbr:Nesting_(computing) dbr:Nesting_algorithm dbr:Nqthm dbr:Systems_theory dbr:Turing_machine_equivalents dbr:Python_syntax_and_semantics dbr:Elixir_(programming_language) dbr:Fringe_search dbr:Function_(computer_programming) dbr:FutureBASIC dbr:Gene_expression_programming dbr:General_recursive_function dbr:Generic_Routing_Encapsulation dbr:Glossary_of_artificial_intelligence dbr:Glossary_of_computer_graphics dbr:Motorola_68000 dbr:Constant-recursive_sequence dbr:Control_flow dbr:Corecursion dbr:Dancing_Links dbr:Arm's-length_recursion dbr:LibreLogo dbr:Lisp_(programming_language) dbr:Lispkit_Lisp dbr:Logo_(programming_language) dbr:ML_(programming_language) dbr:Call_stack dbr:Calling_convention dbr:Computer_program dbr:Functional_programming dbr:Depth_of_recursion dbr:Memory_pool dbr:Pointer_(computer_programming) dbr:Tak_(function) dbr:Masreliez's_theorem dbr:Maze_generation_algorithm dbr:McCarthy_91_function dbr:McCarthy_Formalism dbr:Median_of_medians dbr:Mutual_recursion dbr:Automatic_variable dbr:Backus–Naur_form dbr:C_(programming_language) dbr:Transaction_Processing_Facility dbr:Trie dbr:UCBLogo dbr:Database_trigger dbr:WAV dbr:WSFN_(programming_language) dbr:Divide-and-conquer_algorithm dbr:Gabriel_Sudan dbr:HP_9800_series dbr:Havel–Hakimi_algorithm dbr:Lambda_lifting dbr:Lazy_evaluation dbr:Local_linearization_method dbr:Local_variable dbr:X86_assembly_language dbr:Recurse dbr:ALGOL dbr:ALGOL_60 dbr:American_Computer_Science_League dbr:Curry–Howard_correspondence dbr:Dynamic_programming dbr:EDSAC dbr:Exact_cover dbr:Exponentiation_by_squaring dbr:F_(programming_language) dbr:Fibonacci_number dbr:Fortran dbr:Barnes–Hut_simulation dbr:Overlay_(programming) dbr:Digraph_realization_problem dbr:Dir_(command) dbr:Direct_recursion dbr:Flood_fill dbr:Fold_(higher-order_function) dbr:Fork–join_model dbr:Formal_grammar dbr:Fractal-generating_software dbr:Graph_realization_problem dbr:Graph_traversal dbr:Kalman_filter dbr:Knuth's_Algorithm_X dbr:Left_recursion dbr:Primitive_part_and_content dbr:Strict_conditional dbr:Tower_of_Hanoi dbr:Rader's_FFT_algorithm dbr:Recurrence_relation dbr:Recursion_(disambiguation) dbr:Strength_reduction dbr:The_Power_of_10:_Rules_for_Developing_Safety-Critical_Code dbr:Heapsort dbr:Iterated_function dbr:JavaScript dbr:Backtracking dbr:Counter_machine dbr:Termination_of_recursive_functions dbr:Hylomorphism_(computer_science) dbr:Pattern_calculus dbr:Twelf dbr:AMD_FireStream dbr:AP_Computer_Science dbr:AP_Computer_Science_A dbr:A_New_Kind_of_Science dbr:Ackermann_function dbr:Jupiter_Ace dbr:LFE_(programming_language) dbr:Binary_GCD_algorithm dbr:BlooP_and_FlooP dbr:SuperPascal dbr:Sweble dbr:Edit_distance dbr:Heuristic_(computer_science) dbr:Hofstadter's_law dbr:Template_metaprogramming dbr:Termination_analysis dbr:Modprobe dbr:Recursive_grammar dbr:Direct_function dbr:Boosting_(machine_learning) dbr:Bootstrap_curriculum dbr:C4.5_algorithm dbr:Post–Turing_machine dbr:Circular_definition dbr:Fermat's_factorization_method dbr:Greedy_coloring dbr:Image_segmentation dbr:Merge_algorithm dbr:Natural_numbers_object dbr:OCaml dbr:Occam_(programming_language) dbr:OpenCL dbr:RE2_(software) dbr:Recursion_termination dbr:Recursive_function_(programming) dbr:Reentrancy_(computing) dbr:Sequence dbr:SequenceL dbr:Kleitman–Wang_algorithms dbr:OpenBinder dbr:Software_bug dbr:Loop_variant dbr:MCS_algorithm dbr:Memory_safety dbr:Non-recursive_function dbr:Expected_linear_time_MST_algorithm dbr:F-coalgebra dbr:Factorial dbr:I386 dbr:ID3_algorithm dbr:Imperative_programming dbr:Occam-π dbr:Fixed-point_combinator dbr:Fixed-point_theorems dbr:Gestalt_pattern_matching dbr:Man_or_boy_test dbr:Multimodal_Architecture_and_Interfaces dbr:Multiple_recursion dbr:Polymorphic_recursion dbr:Single_recursion dbr:Non-local_variable dbr:Pairwise_summation dbr:SMAWK_algorithm dbr:Outline_of_computer_programming dbr:Outline_of_logic dbr:Stack_register dbr:Strand_sort dbr:Recursion(computer_science) dbr:Recursive_(computer_science) dbr:Recursive_algorithm dbr:Recursive_call dbr:Recursive_calls dbr:Recursive_limit dbr:Recursive_loop
is rdfs:seeAlso of dbr:Recursive_data_type
is foaf:primaryTopic of wikipedia-en:Recursion_(computer_science)