Рекурсия: различия между версиями

Материал из Энциклопедия вычислительного мышлении
Перейти к навигации Перейти к поиску
(Новая страница: «{{Concept |Description=Рекурсия — определение, описание, изображение какого-либо объекта или проц…»)
 
 
(не показано 20 промежуточных версий 2 участников)
Строка 1: Строка 1:
{{Concept
+
{{Понятие
 
|Description=Рекурсия — определение, описание, изображение какого-либо объекта или процесса внутри самого этого объекта или процесса, то есть ситуация, когда объект является частью самого себя.
 
|Description=Рекурсия — определение, описание, изображение какого-либо объекта или процесса внутри самого этого объекта или процесса, то есть ситуация, когда объект является частью самого себя.
В программировании чаще всего - вызов функцией себя самой.
+
В программировании чаще всего - вызов функцией себя самой, когда функция (процедура) делегирует работу своим клона
 +
|Field_of_knowledge=Информатика
 +
|FieldActivity=Computational Thinker
 +
|Возрастная категория=11
 +
|Examples=https://scratch.mit.edu/projects/334694805/
 +
|Clarifying_video=https://www.youtube.com/watch?v=eiGHdT6lydA
 +
|similar_concepts=клон, процедура
 +
|Environment=Лого, Scratch
 +
}}
 +
=== Примеры ===
 +
 
 +
https://en.scratch-wiki.info/w/images/Kochsim.gif
  
 
Введение в рекурсию в книге Харви о стиле Лого - http://people.eecs.berkeley.edu/~bh/v1ch7/recur1.html
 
Введение в рекурсию в книге Харви о стиле Лого - http://people.eecs.berkeley.edu/~bh/v1ch7/recur1.html
 +
When you're thinking about a recursive procedure, it's especially important to remember that each invocation of a procedure has its own local variables. It's possible to get confused about this because, of course, if a procedure invokes itself as a subprocedure, each invocation uses the same names for local variables. For example, each invocation of downup has a local variable (its input) named word. But each invocation has a separate input variable.
  
 +
; Маленькие человечки: How Recursion Works В книге Simple Scheme
 +
: The crowning achievement of the little-people model is explaining recursion. Remember that every time you call a procedure, a little person is hired to compute the result. If you want to know (+ 2 (+ 3 4)), there are two separate plus specialists involved.
  
When you're thinking about a recursive procedure, it's especially important to remember that each invocation of a procedure has its own local variables. It's possible to get confused about this because, of course, if a procedure invokes itself as a subprocedure, each invocation uses the same names for local variables. For example, each invocation of downup has a local variable (its input) named word. But each invocation has a separate input variable.
 
  
How Recursion Works В книге Simple Scheme
+
==== Вычисление факториала ====
 +
 
 +
<scratchblocks>
 +
define factorial (n)
 +
if < (n) = [0] > then
 +
add [1] to [Factorial-stack v]
 +
else
 +
factorial ( (n) - (1) )
 +
add ( (n) * (item (last v) of [Factorial-stack v])) to [Factorial-stack v]
 +
end
 +
 
 +
when gf clicked
 +
delete (all v) of [Factorial-stack v]
 +
factorial (10)
 +
say (item (last v) of [Factorial-stack v])
 +
</scratchblocks>
 +
 
 +
==== Построение фракталов ====
 +
 
 +
* https://en.scratch-wiki.info/wiki/Recursion_and_Fractals
 +
** https://scratch.mit.edu/projects/10068174/
  
The crowning achievement of the little-people model is explaining recursion. Remember that every time you call a procedure, a little person is hired to compute the result. If you want to know (+ 2 (+ 3 4)), there are two separate plus specialists involved.
+
; Теория
|FieldActivity=Computational Thinker
+
: Процедуры и функции. Как создаются и как используются пользовательские функции. Процедуры как средство абстракции.
|Ages=10
+
; Практика
}}
+
: Какие блоки используются для создания собственных процедур в Scratch? Создайте процедуру, которая будет принимать на входе три числа и присваивать переменной значение наибольшего из этих трех чисел.

Текущая версия на 21:11, 8 апреля 2022

Описание Рекурсия — определение, описание, изображение какого-либо объекта или процесса внутри самого этого объекта или процесса, то есть ситуация, когда объект является частью самого себя.

В программировании чаще всего - вызов функцией себя самой, когда функция (процедура) делегирует работу своим клона

Область знаний Информатика
Область использования (ISTE) Computational Thinker
Возрастная категория 11
Примеры реализации Использование цепочки свойств «Ehttps://scratch.mit.edu/projects/334694805/amples» недопустимо в семантической аннотации.
Авторы
Поясняющее видео https://www.youtube.com/watch?v=eiGHdT6lydA
Близкие понятия клон, процедура
Среды и средства для освоения понятия Лого, Scratch

Примеры[править]

Kochsim.gif

Введение в рекурсию в книге Харви о стиле Лого - http://people.eecs.berkeley.edu/~bh/v1ch7/recur1.html When you're thinking about a recursive procedure, it's especially important to remember that each invocation of a procedure has its own local variables. It's possible to get confused about this because, of course, if a procedure invokes itself as a subprocedure, each invocation uses the same names for local variables. For example, each invocation of downup has a local variable (its input) named word. But each invocation has a separate input variable.

Маленькие человечки
How Recursion Works В книге Simple Scheme
The crowning achievement of the little-people model is explaining recursion. Remember that every time you call a procedure, a little person is hired to compute the result. If you want to know (+ 2 (+ 3 4)), there are two separate plus specialists involved.


Вычисление факториала[править]

define factorial (n)
if < (n) = [0] > then
 add [1] to [Factorial-stack v]
else
 factorial ( (n) - (1) )
 add ( (n) * (item (last v) of [Factorial-stack v])) to [Factorial-stack v]
end

when gf clicked
delete (all v) of [Factorial-stack v]
factorial (10)
say (item (last v) of [Factorial-stack v])

Построение фракталов[править]

Теория
Процедуры и функции. Как создаются и как используются пользовательские функции. Процедуры как средство абстракции.
Практика
Какие блоки используются для создания собственных процедур в Scratch? Создайте процедуру, которая будет принимать на входе три числа и присваивать переменной значение наибольшего из этих трех чисел.