# Recursion (computer science) ## MicroSim spec - **Recommended sim type:** [[Fractal|fractal]] / iterative [[Geometry|geometry]] - **Microsimmability score:** 78/100 - **Layout:** drawing region (canvas) on top; control region (sliders/buttons) below. ### Parameters (tunable controls) - `Recursion depth` - `Branching factor` - `Scale ratio` ### What animates A recursive tree draws itself within itself, deeper as the depth increases. ### Learning objective Show how a procedure that calls itself builds nested [[Structure|structure]]. ## Links (Wikipedia order) <!-- injected from _registry/childlinks/Recursion_(computer_science).json (2026-07-30T02:09:12Z) --> `ALGOL_60` · `Abductive_logic_programming` · `Abstraction_(computer_science)` · `Ackermann_function` · `Action_language` · `Actor_model` · `Adaptive_quadrature` · `Agent-oriented_programming` · `Alan_Turing` · `Algebraic_data_type` · `Algebraic_modeling_language` · [[Algorithm]] · [[Algorithmic_efficiency]] · `Algorithmic_paradigm` · `Alonzo_Church` · `Anonymous_function` · `Answer_set_programming` · `Applicative_programming_language` · `Array_(data_structure)` · `Array_programming` · `Artificial_Intelligence:_A_Modern_Approach` · `Aspect-oriented_programming` · `Associative_array` · `Attribute-oriented_programming` · `Automata-based_programming` · `Automatic_mutual_exclusion` · `Automatic_programming` · `Backtracking` · `Backus–Naur_form` · `Backward_chaining` · `Bayesian_program_synthesis` · `Big_O_notation` · `Binary_search` · `Binary_search_tree` · `Binary_tree` · `Block_(programming)` · `Breadth-first_search` · `Brute-force_search` · `CRC_Press` · `C_(programming_language)` · `Call_stack` · `Cambridge_University_Press` · `Choreographic_programming` · `Clojure` · `Command_language` · `Comparison_of_functional_programming_languages` · `Comparison_of_multi-paradigm_programming_languages` · `Comparison_of_programming_languages` · `Comparison_of_programming_languages_(object-oriented_programming)` · `Compiler` · `Component-based_software_engineering` · `Computability` · `Computability_theory` · `Computational_problem` · `Computer_program` · [[Computer_programming]] · [[Computer_science]] · `Concatenative_programming_language` · `Concurrent_computing` · `Concurrent_constraint_logic_programming` · `Concurrent_logic_programming` · `Concurrent_object-oriented_programming` · `Constraint_logic_programming` · `Constraint_programming` · `Control_flow` · `Corecursion` · `Data` · `Data-driven_programming` · `Data-oriented_design` · `Data_structure` · `Dataflow_programming` · `Datalog` · `Declarative_programming` · `Definition` · `Dependent_type` · `Depth-first_search` · `Design_by_contract` · `Differentiable_programming` · `Divide-and-conquer_algorithm` · `Domain-specific_language` · `Donald_Knuth` · `Dr._Dobb's_Journal` · [[Dynamic_programming]] · `Dynamic_programming_language` · [[Edsger_W._Dijkstra]] · `End-user_development` · `Euclidean_algorithm` · `Event-driven_programming` · `Exception_handling` · `Expression-oriented_programming_language` · `Extensible_programming` · `Factorial` · `Feature-oriented_programming` · `Fenwick_tree` · [[Fibonacci_sequence]] · `Filter_(software)` · `Flow-based_programming` · `Fold_(higher-order_function)` · `Forward_chaining` · [[Fractal]] · `Function-level_programming` · `Function_(computer_programming)` · `Functional_logic_programming` · `Functional_programming` · `Functional_reactive_programming` · `Generalized_algebraic_data_type` · `Generic_programming` · `Gerald_Jay_Sussman` · `GitHub` · `Goto` · `Grammar-oriented_programming` · `Graph_(abstract_data_type)` · `Graph_rewriting` · `Graph_traversal` · `Greatest_common_divisor` · `Greedy_algorithm` · `Hash_function` · `Hash_table` · `Haskell` · `Heap_(data_structure)` · `Hierarchical_and_recursive_queries_in_SQL` · `Higher-order_function` · `Higher-order_programming` · `Homoiconicity` · `Hygienic_macro` · `Immutable_object` · `Imperative_programming` · `Inductive_logic_programming` · `Inductive_programming` · `Infinite_loop` · `Infinite_set` · `Insertion_sort` · `Instance_(computer_science)` · `Interactive_programming` · `Interface_description_language` · `Interpreter_(computing)` · `Invariant-based_programming` · `Iteration` · `Jackson_structured_programming` · `Java_(programming_language)` · `John_McCarthy_(computer_scientist)` · `Kleene–Rosser_paradox` · `Knowledge_representation_and_reasoning` · `Kurt_Gödel` · `Language-oriented_programming` · `Lazy_evaluation` · `Linked_list` · `Lisp_(programming_language)` · `List_(abstract_data_type)` · `List_comprehension` · `List_of_algorithms` · `List_of_data_structures` · `List_of_object-oriented_programming_languages` · `List_of_programming_languages` · `List_of_programming_languages_by_type` · `Literate_programming` · [[Logic]] · `Logic_programming` · `Logo_(programming_language)` · `Loop_variant` · `Low-code_development_platform` · `MIT_Press` · `Macro_(computer_science)` · `Macroprogramming` · `Malware` · `Master_theorem_(analysis_of_algorithms)` · `Matching_wildcards` · `Mathematical_induction` · `Mathematical_logic` · `Mathematics` · `McCarthy_91_function` · `Memoization` · `Memory_management` · `Merge_sort` · `Metalinguistic_abstraction` · `Metaprogramming` · `Microsoft_Developer_Network` · `Minimax` · `Modeling_language` · `Modular_programming` · `Monad_(functional_programming)` · `Multi-stage_programming` · `Multitier_programming` · `Mutual_recursion` · `Natural_language_programming` · `Natural_number` · `Nested_function` · `Newton's_method` · `Niklaus_Wirth` · `Non-English-based_programming_languages` · `Non-structured_programming` · `Nondeterministic_programming` · `Object-based_language` · `Object-oriented_programming` · `Online_algorithm` · `Ontology_language` · `Organic_computing` · `Page_description_language` · `Parallel_computing` · `Parallel_programming_model` · `Partial_application` · `Partitioned_global_address_space` · `Pathological_(mathematics)` · `Pattern_matching` · `Persistent_programming_language` · `Peter_Norvig` · `Pipeline_(software)` · `Primitive_recursive_function` · `Probabilistic_logic_programming` · `Probabilistic_programming` · `Procedural_programming` · `Process-oriented_programming` · `Process_(computing)` · `Process_state` · `Production_system_(computer_science)` · `Profiling_(computer_programming)` · `Program_synthesis` · `Programmer` · `Programming_by_demonstration` · `Programming_by_example` · `Programming_in_the_large_and_programming_in_the_small` · `Programming_language` · `Programming_paradigm` · `Prolog` · `Prototype-based_programming` · `Pseudocode` · `Purely_functional_programming` · `Python_(programming_language)` · `Quantum_programming` · `Query_language` · `Queue_(abstract_data_type)` · `Quicksort` · `Randomized_algorithm` · `Reactive_programming` · [[Recurrence_relation]] · `Recursion` · `Recursive_acronym` · `Recursive_data_type` · `Reflective_programming` · `Relativistic_programming` · `Remainder` · `Role-oriented_programming` · `Ronald_Graham` · `Root-finding_algorithm` · `Scheme_(programming_language)` · `Scientific_programming_language` · `Scripting_language` · `Segment_tree` · `Self-modifying_code` · `Separation_of_concerns` · `Service-oriented_programming` · `Set_theoretic_programming` · `Short-circuit_evaluation` · `Sierpiński_curve` · `Sierpiński_triangle` · `Signals_and_slots` · `Simulation_language` · `Software_testing` · `Sorting_algorithm` · `Spacecraft_command_language` · `Stack-oriented_programming` · `Stack_(abstract_data_type)` · `Stack_buffer_overflow` · `Stanley_Gill` · `Statement_(computer_science)` · `Stephen_Cole_Kleene` · [[Stream_processing]] · `Streaming_algorithm` · `Strict_programming_language` · `String-searching_algorithm` · `String_(computer_science)` · `Structural_induction` · `Structure_and_Interpretation_of_Computer_Programs` · `Structured_concurrency` · `Structured_programming` · `Stuart_J._Russell` · `Subject-oriented_programming` · `Sweep_line_algorithm` · `Symbolic_programming` · `Synchronous_programming_language` · `System_programming_language` · `Tacit_programming` · `Tactile_programming_language` · `Tail_call` · `Template_metaprogramming` · `Template_processor` · `Termination_analysis` · `Time_complexity` · `Timsort` · `Topological_sorting` · `Total_functional_programming` · `Transformation_language` · `Tree_(abstract_data_type)` · `Tree_traversal` · `Trie` · `Turing_completeness` · `Turtle_graphics` · `Uniform_function_call_syntax` · `Value-level_programming` · `Vibe_coding` · `Visual_programming_language` · `Wildmat` · `Wiley_(publisher)` > p5.js MicroSim stub · part of Systems Thinking · [Wikipedia source](https://en.wikipedia.org/wiki/Recursion_%28computer_science%29) > Relation: subfield of systems thinking. ## Concept summary In [[Computer_science|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. ## Build checklist - [ ] Claim it: set `status: in-progress` + `lease` + `leased_at` - [ ] Write the child page explaining the concept (tie it back to systems thinking) - [ ] Finalize parameter ranges and defaults - [ ] Implement the p5.js sketch (drawing + control regions) - [ ] Add caption + the learning objective on the page - [ ] Set `status: done` ## p5.js sketch ```javascript // MicroSim: Recursion (computer science) let controls = {}; function setup() { // createCanvas(...); create sliders for the parameters above. } function draw() { // background(...); read controls; render fractal / iterative geometry; respond live. } ``` --- Back to Systems Thinking · Wikipedia: [Recursion (computer science)](https://en.wikipedia.org/wiki/Recursion_%28computer_science%29) --- <!-- SEMIOTIC-PROFILE:START --> ## Semiotic profile > *The semiotic universals this article invokes, machine-derived from the crossref — **unverified** (born so). Populated 2026-07-06 for the Systems room.* **Universals (7):** 🟢 recursion (11) · 🟡 system (5) · 🟡 geometry (4) · 🟡 science (4) · 🟢 self similarity (4) · 🟢 iteration (3) · 🟡 structure (2) **Enter by sign:** Systems Semiotic Gateway · Alphabetum · Icon Registry · ← Systems Portal <!-- SEMIOTIC-PROFILE:END --> <!-- SPINEPATH:BEGIN g20 — shortest chain of Wikipedia links between local articles to a Compendium Main article; do not hand-edit inside --> *Connected to the Apex Spine:* Recursion (computer science) → [[Fractal|Fractal]] → [[Fluid_dynamics|Fluid dynamics]] — [[WT!Thury_Hydrodynamics_Compendium|Compendium]] section 1, *Fluid dynamics*. <!-- SPINEPATH:END --> ## Wikipedia : Wikitube **Strict pair:** [Wikipedia](https://en.wikipedia.org/wiki/Recursion_%28computer_science%29) : [Wikitube](https://en.wikitube.io/wiki/Recursion_%28computer_science%29) ## Previous hub tags Tree parent: [[Systems_theory]]. Legacy hubs: none. --- *Sources: 1 legacy note. Minted wave 1, 2026-07-30 (v1.6 order).*