ݺߣ

ݺߣShare a Scribd company logo
Алгоритмы            Перебор                   Рекурсия                 References




            Алгоритмы. Перебор и рекурсия.

                               Информатика
                               10-11 классы


                           4 декабря 2011 г.




            Информатика 10-11 классы   Алгоритмы. Перебор и рекурсия.
Алгоритмы                   Перебор                   Рекурсия                 References



Что такое алгоритм?

            Алгоритм это конечный набор правил, который
            определяет последовательность операций для решения
            конкретного множества задач и обладает пятью важными
            чертами: конечность, определённость, ввод, вывод,
            эффективность (Д. Кнут).
            Основные свойства алгоритма:
             1   Дискретность последовательное выполнение простых
                 шагов.
             2   Детерменированность определённость одинаковые
                 исходные данные дают одинаковый результат.
             3   Понятность.
             4   Конечность количество шагов должно быть конечно
                 (может быть и неявно задано).
             5   Универсальность алгоритм должен работать для
                 множества исходных данных.

                   Информатика 10-11 классы   Алгоритмы. Перебор и рекурсия.
Алгоритмы                   Перебор                   Рекурсия                 References



Виды алгоритмов



       1    Динамическое программирование (было).
       2    Метод перебора.
       3    Рекурсия (повторение через себя). Рекурсия                 это
            рекурсия.
       4    Жадные алгоритмы (хватай сначала самое большое).
       5    Разделяй и властвуй (привет, принцип 3 ветвей власти).
       6    Метод двоичного поиска.
       7    Много–много других.




                   Информатика 10-11 классы   Алгоритмы. Перебор и рекурсия.
Алгоритмы                      Перебор                      Рекурсия                References



Метод перебора
            Идея метода перебора очень проста переберём все
            варианты и выберем только те, которые нам нужны.
            Рассмотрим простую задачу: вывести на экран простые
            числа <= N.
            Есть красивые решения типа решета Эратосфена. Но мы
            пойдём “в лоб”.

     Listing 1: Простые числа
            def is_prime ?( n )
              r e t u r n f a l s e i f ( ( n == 1 ) | | ( n == 0 ) )
              f o r i i n 2 . . ( n−1)
                  r e t u r n f a l s e i f ( n%i == 0 )
              end
              true
            end

            100. times {| i | puts i       i f is_prime ?( i ) }

                      Информатика 10-11 классы     Алгоритмы. Перебор и рекурсия.
Алгоритмы                  Перебор                   Рекурсия                 References



Метод перебора: НОД

            Рассмотрим задачу: найти НОД(a,b).
            Пример: НОД(15,12) = 3
            Решаем методом перебора.
            Переберём все возможные делители этих двух чисел.
            Для этого пройдёмся циклом от 2 до, например, a.
            Если оба числа делятся на пробегаемое число, значит,
            пробегаемое число делитель. Запоминаем его.
            Если в результате работы программы мы находим
            делитель, который больше запомненного ранее, то стираем
            старый и записываем новый.
            Изначально зададим НОД = 1 (на 1 все числа делятся).
            НОД по-английски         gcd.

                  Информатика 10-11 классы   Алгоритмы. Перебор и рекурсия.
Алгоритмы                   Перебор                   Рекурсия                 References



Метод перебора: НОД

     Listing 2: НОД двух чисел a и b

            def gcd ( a , b )
              max = 1
              for i in 2 . . a
                max = i i f ( ( a%i ==0) && ( b%i ==0))
              end
              max
            end

            a = 126
            b = 486

            p u t s gcd ( a , b )

                   Информатика 10-11 классы   Алгоритмы. Перебор и рекурсия.
Алгоритмы                  Перебор                   Рекурсия                 References



Задачи на метод перебора


            Задача 1. Дано некоторое число a. Вывести на экран все
            числа, которые взаимно просты с a и не превышают N. N
            задаётся также в начале программы.
            Пример: a = 3, N = 10. Программа должна вывести
            следующие числа: 2, 4, 5, 7, 8, 10.
            Задача 2. Вывести на экран все пары взаимно простых
            чисел, каждое из которых не превышает N. N задаётся в
            начале программы.
            Пример: N = 5. Программа должна вывести: (2,3), (2,5),
            (3,4), (3,5), (4,5).



                  Информатика 10-11 классы   Алгоритмы. Перебор и рекурсия.
Алгоритмы            Перебор                   Рекурсия                 References



Рекурсия




                  Рис.: Источник: http://ru.wikipedia.org


            Информатика 10-11 классы   Алгоритмы. Перебор и рекурсия.
Алгоритмы            Перебор                   Рекурсия                 References



Рекурсия




                  Рис.: Источник: http://ru.wikipedia.org
            Информатика 10-11 классы   Алгоритмы. Перебор и рекурсия.
Алгоритмы                   Перебор                   Рекурсия                 References



Рекурсия

            Рекурсия это рекурсия.
            Рекурсия это когда функция использует сама себя.
            Пример рекурсии числа Фибоначчи. Для того, чтобы
            посчитать 10 число Фибоначчи, нужно знать 8 и 9. А
            чтобы узнать их, нужно знать 2 их предыдущих и так
            далее.
            У рекурсии всегда есть две составляющие:
             1   База до какого момента спускаемся. В случае чисел
                 Фибоначчи база это нулевое и первое числа, которые
                 равны 1.
             2   Рекуррентная формула формула, которая говорит, как
                 получить что-то из предыдущего. Для чисел Фибоначчи
                 это: число Фибоначчи равно сумме двух предыдущих
                 (ϕn = ϕn−1 + ϕn−2 )
            Рекурсия может быть медленной.
                   Информатика 10-11 классы   Алгоритмы. Перебор и рекурсия.
Алгоритмы                         Перебор                          Рекурсия               References



Числа Фибоначчи: рекурсия


            Напишем функцию для вычисления n–ного числа
            Фибоначчи через рекурсию.
            (!) Сравните по времени, сколько вычисляется 50-е число
            Фибоначчи рекурсией и обычным циклом.

     Listing 3: Рекурсия для чисел Фибоначчи
            def f i b o n a c c i ( n )
              r e t u r n 1 i f ( ( n==0) | | ( n==1))
              f i b o n a c c i ( n−1)+ f i b o n a c c i ( n−2)
            end

            puts f i b o n a c c i (10)




                       Информатика 10-11 классы          Алгоритмы. Перебор и рекурсия.
Алгоритмы                  Перебор                   Рекурсия                 References



Легенда о Ханойских башнях

            Легенда гласит, что в Великом храме города Бенарас, под
            собором, отмечающим середину мира, находится
            бронзовый диск, на котором укреплены 3 алмазных
            стержня, высотой в один локоть и толщиной с пчелу.
            Давным-давно, в самом начале времён, монахи этого
            монастыря провинились перед богом Брахмой.
            Разгневанный, Брахма воздвиг три высоких стержня и на
            один из них возложил 64 диска. Брахма поместил на один
            из стержней 64 диска из чистого золота, причем так, что
            каждый меньший диск лежит на большем.
            Как только все 64 диска будут переложены со стержня, на
            который Брахма сложил их при создании мира, на другой
            стержень, башня вместе с храмом обратятся в пыль и под
            громовые раскаты погибнет мир.

                  Информатика 10-11 классы   Алгоритмы. Перебор и рекурсия.
Алгоритмы            Перебор                   Рекурсия                 References



Задача о ханойских башнях




                  Рис.: Источник: http://ru.wikipedia.org




            Информатика 10-11 классы   Алгоритмы. Перебор и рекурсия.
Алгоритмы                    Перебор                   Рекурсия                 References



Задача о ханойских башнях

            Пример простого решения рекурсией без понимания
            работы алгоритма задача о ханойских башнях.
            Даны три стержня, на один из которых нанизаны
            несколько колец, причем кольца отличаются размером и
            лежат меньшее на большем. Задача состоит в том, чтобы
            перенести пирамиду из восьми колец за наименьшее число
            ходов. За один раз разрешается переносить только одно
            кольцо, причём нельзя класть большее кольцо на меньшее.
            Пример алгоритма для 3 колец: с 1 на 3, с 1 на 2, с 3 на 2,
            с 1 на 3, с 2 на 1, с 2 на 3, с 1 на 3.
            Задача 1. Написать программу с использованием рекурсии, которая
            выводит на экран алгоритм решения задачи для заданного количества
            колец.
            Задача 2. Посчитать и объяснить, сколько минимально потребуется
            монахам времени, чтобы выполнить условие Брахмы. Предположим, что на
            1 перекладывание монахи тратят 1 минуту.

                    Информатика 10-11 классы   Алгоритмы. Перебор и рекурсия.
Алгоритмы                   Перебор                   Рекурсия                 References



References




            Все презентации доступны на http://school.smirik.ru!
            Вопросы, предложения, д/з: smirik@gmail.com




                   Информатика 10-11 классы   Алгоритмы. Перебор и рекурсия.

More Related Content

Similar to Алгоритмы на ruby: перебор и рекурсия (20)

алгоритм циклический
алгоритм циклическийалгоритм циклический
алгоритм циклический
Khydosilova
Рекурсия (2017)
Рекурсия (2017)Рекурсия (2017)
Рекурсия (2017)
Alexey Neznanov
Михаил Александров, Индуктивное моделирование
Михаил Александров, Индуктивное моделированиеМихаил Александров, Индуктивное моделирование
Михаил Александров, Индуктивное моделирование
Lidia Pivovarova
Рекурсия. Поиск
Рекурсия. ПоискРекурсия. Поиск
Рекурсия. Поиск
Olexandra Dmytrenko
чернякова г.в.
чернякова г.в.чернякова г.в.
чернякова г.в.
sharikdp
Лекция 11 Приближенные алгоритмы
Лекция 11 Приближенные алгоритмыЛекция 11 Приближенные алгоритмы
Лекция 11 Приближенные алгоритмы
simple_people
01 вводная
01 вводная01 вводная
01 вводная
serega.ovukhov
Инкапсуляция и полиморфизм в ruby
Инкапсуляция и полиморфизм в rubyИнкапсуляция и полиморфизм в ruby
Инкапсуляция и полиморфизм в ruby
Evgeny Smirnov
Алгоритм
АлгоритмАлгоритм
Алгоритм
Vlad Ivanishin
Deep Learning and Convolutional Networks
Deep Learning and Convolutional NetworksDeep Learning and Convolutional Networks
Deep Learning and Convolutional Networks
AlignedResearch
20091025 algorithmsfornphardproblems kulikov_lecture03
20091025 algorithmsfornphardproblems kulikov_lecture0320091025 algorithmsfornphardproblems kulikov_lecture03
20091025 algorithmsfornphardproblems kulikov_lecture03
Computer Science Club
5
55
5
ssusera868ff
Лекция 13: Трудноразрешимые задачи. NP-полнота.
Лекция 13: Трудноразрешимые задачи. NP-полнота.Лекция 13: Трудноразрешимые задачи. NP-полнота.
Лекция 13: Трудноразрешимые задачи. NP-полнота.
Mikhail Kurnosov
алгоритм циклический
алгоритм циклическийалгоритм циклический
алгоритм циклический
Khydosilova
Михаил Александров, Индуктивное моделирование
Михаил Александров, Индуктивное моделированиеМихаил Александров, Индуктивное моделирование
Михаил Александров, Индуктивное моделирование
Lidia Pivovarova
чернякова г.в.
чернякова г.в.чернякова г.в.
чернякова г.в.
sharikdp
Лекция 11 Приближенные алгоритмы
Лекция 11 Приближенные алгоритмыЛекция 11 Приближенные алгоритмы
Лекция 11 Приближенные алгоритмы
simple_people
Инкапсуляция и полиморфизм в ruby
Инкапсуляция и полиморфизм в rubyИнкапсуляция и полиморфизм в ruby
Инкапсуляция и полиморфизм в ruby
Evgeny Smirnov
Deep Learning and Convolutional Networks
Deep Learning and Convolutional NetworksDeep Learning and Convolutional Networks
Deep Learning and Convolutional Networks
AlignedResearch
20091025 algorithmsfornphardproblems kulikov_lecture03
20091025 algorithmsfornphardproblems kulikov_lecture0320091025 algorithmsfornphardproblems kulikov_lecture03
20091025 algorithmsfornphardproblems kulikov_lecture03
Computer Science Club
Лекция 13: Трудноразрешимые задачи. NP-полнота.
Лекция 13: Трудноразрешимые задачи. NP-полнота.Лекция 13: Трудноразрешимые задачи. NP-полнота.
Лекция 13: Трудноразрешимые задачи. NP-полнота.
Mikhail Kurnosov

More from Evgeny Smirnov (20)

Внедряем MOOC'и на уроке информатики
Внедряем MOOC'и на уроке информатикиВнедряем MOOC'и на уроке информатики
Внедряем MOOC'и на уроке информатики
Evgeny Smirnov
Инновации которые не мешают
Инновации которые не мешаютИнновации которые не мешают
Инновации которые не мешают
Evgeny Smirnov
Мобильные приложения в школе
Мобильные приложения в школеМобильные приложения в школе
Мобильные приложения в школе
Evgeny Smirnov
Порядок и хаос в Солнечной системе
Порядок и хаос в Солнечной системеПорядок и хаос в Солнечной системе
Порядок и хаос в Солнечной системе
Evgeny Smirnov
Ruby: инкапсуляция и полиморфизм
Ruby: инкапсуляция и полиморфизмRuby: инкапсуляция и полиморфизм
Ruby: инкапсуляция и полиморфизм
Evgeny Smirnov
Объектно-ориентированное программирование в ruby
Объектно-ориентированное программирование в rubyОбъектно-ориентированное программирование в ruby
Объектно-ориентированное программирование в ruby
Evgeny Smirnov
Мобильные приложения в образовании
Мобильные приложения в образованииМобильные приложения в образовании
Мобильные приложения в образовании
Evgeny Smirnov
NumBuster! Почему связи между данными важнее самих данных.
NumBuster! Почему связи между данными важнее самих данных.NumBuster! Почему связи между данными важнее самих данных.
NumBuster! Почему связи между данными важнее самих данных.
Evgeny Smirnov
Мастер-класс: LMS42, ч.2
Мастер-класс: LMS42, ч.2Мастер-класс: LMS42, ч.2
Мастер-класс: LMS42, ч.2
Evgeny Smirnov
Мастер-класс: Anki карточки
Мастер-класс: Anki карточкиМастер-класс: Anki карточки
Мастер-класс: Anki карточки
Evgeny Smirnov
Мастер-класс: Quiz up
Мастер-класс: Quiz upМастер-класс: Quiz up
Мастер-класс: Quiz up
Evgeny Smirnov
Мастер-класс: Dragonbox Algebra
Мастер-класс: Dragonbox AlgebraМастер-класс: Dragonbox Algebra
Мастер-класс: Dragonbox Algebra
Evgeny Smirnov
Мастер-класс: начало
Мастер-класс: началоМастер-класс: начало
Мастер-класс: начало
Evgeny Smirnov
LMS42: основы (для мастер-класса)
LMS42: основы (для мастер-класса)LMS42: основы (для мастер-класса)
LMS42: основы (для мастер-класса)
Evgeny Smirnov
Промо-презентация для мастер-класса "Образовательные и игровые платформы в по...
Промо-презентация для мастер-класса "Образовательные и игровые платформы в по...Промо-презентация для мастер-класса "Образовательные и игровые платформы в по...
Промо-презентация для мастер-класса "Образовательные и игровые платформы в по...
Evgeny Smirnov
Образовательные и игровые платформы в помощь учителю и методисту
Образовательные и игровые платформы в помощь учителю и методистуОбразовательные и игровые платформы в помощь учителю и методисту
Образовательные и игровые платформы в помощь учителю и методисту
Evgeny Smirnov
Педагогический клуб 18.10: LMS42
Педагогический клуб 18.10: LMS42Педагогический клуб 18.10: LMS42
Педагогический клуб 18.10: LMS42
Evgeny Smirnov
Введение в алгоритмы
Введение в алгоритмыВведение в алгоритмы
Введение в алгоритмы
Evgeny Smirnov
Внедряем MOOC'и на уроке информатики
Внедряем MOOC'и на уроке информатикиВнедряем MOOC'и на уроке информатики
Внедряем MOOC'и на уроке информатики
Evgeny Smirnov
Инновации которые не мешают
Инновации которые не мешаютИнновации которые не мешают
Инновации которые не мешают
Evgeny Smirnov
Мобильные приложения в школе
Мобильные приложения в школеМобильные приложения в школе
Мобильные приложения в школе
Evgeny Smirnov
Порядок и хаос в Солнечной системе
Порядок и хаос в Солнечной системеПорядок и хаос в Солнечной системе
Порядок и хаос в Солнечной системе
Evgeny Smirnov
Ruby: инкапсуляция и полиморфизм
Ruby: инкапсуляция и полиморфизмRuby: инкапсуляция и полиморфизм
Ruby: инкапсуляция и полиморфизм
Evgeny Smirnov
Объектно-ориентированное программирование в ruby
Объектно-ориентированное программирование в rubyОбъектно-ориентированное программирование в ruby
Объектно-ориентированное программирование в ruby
Evgeny Smirnov
Мобильные приложения в образовании
Мобильные приложения в образованииМобильные приложения в образовании
Мобильные приложения в образовании
Evgeny Smirnov
NumBuster! Почему связи между данными важнее самих данных.
NumBuster! Почему связи между данными важнее самих данных.NumBuster! Почему связи между данными важнее самих данных.
NumBuster! Почему связи между данными важнее самих данных.
Evgeny Smirnov
Мастер-класс: LMS42, ч.2
Мастер-класс: LMS42, ч.2Мастер-класс: LMS42, ч.2
Мастер-класс: LMS42, ч.2
Evgeny Smirnov
Мастер-класс: Anki карточки
Мастер-класс: Anki карточкиМастер-класс: Anki карточки
Мастер-класс: Anki карточки
Evgeny Smirnov
Мастер-класс: Quiz up
Мастер-класс: Quiz upМастер-класс: Quiz up
Мастер-класс: Quiz up
Evgeny Smirnov
Мастер-класс: Dragonbox Algebra
Мастер-класс: Dragonbox AlgebraМастер-класс: Dragonbox Algebra
Мастер-класс: Dragonbox Algebra
Evgeny Smirnov
Мастер-класс: начало
Мастер-класс: началоМастер-класс: начало
Мастер-класс: начало
Evgeny Smirnov
LMS42: основы (для мастер-класса)
LMS42: основы (для мастер-класса)LMS42: основы (для мастер-класса)
LMS42: основы (для мастер-класса)
Evgeny Smirnov
Промо-презентация для мастер-класса "Образовательные и игровые платформы в по...
Промо-презентация для мастер-класса "Образовательные и игровые платформы в по...Промо-презентация для мастер-класса "Образовательные и игровые платформы в по...
Промо-презентация для мастер-класса "Образовательные и игровые платформы в по...
Evgeny Smirnov
Образовательные и игровые платформы в помощь учителю и методисту
Образовательные и игровые платформы в помощь учителю и методистуОбразовательные и игровые платформы в помощь учителю и методисту
Образовательные и игровые платформы в помощь учителю и методисту
Evgeny Smirnov
Педагогический клуб 18.10: LMS42
Педагогический клуб 18.10: LMS42Педагогический клуб 18.10: LMS42
Педагогический клуб 18.10: LMS42
Evgeny Smirnov
Введение в алгоритмы
Введение в алгоритмыВведение в алгоритмы
Введение в алгоритмы
Evgeny Smirnov

Алгоритмы на ruby: перебор и рекурсия

  • 1. Алгоритмы Перебор Рекурсия References Алгоритмы. Перебор и рекурсия. Информатика 10-11 классы 4 декабря 2011 г. Информатика 10-11 классы Алгоритмы. Перебор и рекурсия.
  • 2. Алгоритмы Перебор Рекурсия References Что такое алгоритм? Алгоритм это конечный набор правил, который определяет последовательность операций для решения конкретного множества задач и обладает пятью важными чертами: конечность, определённость, ввод, вывод, эффективность (Д. Кнут). Основные свойства алгоритма: 1 Дискретность последовательное выполнение простых шагов. 2 Детерменированность определённость одинаковые исходные данные дают одинаковый результат. 3 Понятность. 4 Конечность количество шагов должно быть конечно (может быть и неявно задано). 5 Универсальность алгоритм должен работать для множества исходных данных. Информатика 10-11 классы Алгоритмы. Перебор и рекурсия.
  • 3. Алгоритмы Перебор Рекурсия References Виды алгоритмов 1 Динамическое программирование (было). 2 Метод перебора. 3 Рекурсия (повторение через себя). Рекурсия это рекурсия. 4 Жадные алгоритмы (хватай сначала самое большое). 5 Разделяй и властвуй (привет, принцип 3 ветвей власти). 6 Метод двоичного поиска. 7 Много–много других. Информатика 10-11 классы Алгоритмы. Перебор и рекурсия.
  • 4. Алгоритмы Перебор Рекурсия References Метод перебора Идея метода перебора очень проста переберём все варианты и выберем только те, которые нам нужны. Рассмотрим простую задачу: вывести на экран простые числа <= N. Есть красивые решения типа решета Эратосфена. Но мы пойдём “в лоб”. Listing 1: Простые числа def is_prime ?( n ) r e t u r n f a l s e i f ( ( n == 1 ) | | ( n == 0 ) ) f o r i i n 2 . . ( n−1) r e t u r n f a l s e i f ( n%i == 0 ) end true end 100. times {| i | puts i i f is_prime ?( i ) } Информатика 10-11 классы Алгоритмы. Перебор и рекурсия.
  • 5. Алгоритмы Перебор Рекурсия References Метод перебора: НОД Рассмотрим задачу: найти НОД(a,b). Пример: НОД(15,12) = 3 Решаем методом перебора. Переберём все возможные делители этих двух чисел. Для этого пройдёмся циклом от 2 до, например, a. Если оба числа делятся на пробегаемое число, значит, пробегаемое число делитель. Запоминаем его. Если в результате работы программы мы находим делитель, который больше запомненного ранее, то стираем старый и записываем новый. Изначально зададим НОД = 1 (на 1 все числа делятся). НОД по-английски gcd. Информатика 10-11 классы Алгоритмы. Перебор и рекурсия.
  • 6. Алгоритмы Перебор Рекурсия References Метод перебора: НОД Listing 2: НОД двух чисел a и b def gcd ( a , b ) max = 1 for i in 2 . . a max = i i f ( ( a%i ==0) && ( b%i ==0)) end max end a = 126 b = 486 p u t s gcd ( a , b ) Информатика 10-11 классы Алгоритмы. Перебор и рекурсия.
  • 7. Алгоритмы Перебор Рекурсия References Задачи на метод перебора Задача 1. Дано некоторое число a. Вывести на экран все числа, которые взаимно просты с a и не превышают N. N задаётся также в начале программы. Пример: a = 3, N = 10. Программа должна вывести следующие числа: 2, 4, 5, 7, 8, 10. Задача 2. Вывести на экран все пары взаимно простых чисел, каждое из которых не превышает N. N задаётся в начале программы. Пример: N = 5. Программа должна вывести: (2,3), (2,5), (3,4), (3,5), (4,5). Информатика 10-11 классы Алгоритмы. Перебор и рекурсия.
  • 8. Алгоритмы Перебор Рекурсия References Рекурсия Рис.: Источник: http://ru.wikipedia.org Информатика 10-11 классы Алгоритмы. Перебор и рекурсия.
  • 9. Алгоритмы Перебор Рекурсия References Рекурсия Рис.: Источник: http://ru.wikipedia.org Информатика 10-11 классы Алгоритмы. Перебор и рекурсия.
  • 10. Алгоритмы Перебор Рекурсия References Рекурсия Рекурсия это рекурсия. Рекурсия это когда функция использует сама себя. Пример рекурсии числа Фибоначчи. Для того, чтобы посчитать 10 число Фибоначчи, нужно знать 8 и 9. А чтобы узнать их, нужно знать 2 их предыдущих и так далее. У рекурсии всегда есть две составляющие: 1 База до какого момента спускаемся. В случае чисел Фибоначчи база это нулевое и первое числа, которые равны 1. 2 Рекуррентная формула формула, которая говорит, как получить что-то из предыдущего. Для чисел Фибоначчи это: число Фибоначчи равно сумме двух предыдущих (ϕn = ϕn−1 + ϕn−2 ) Рекурсия может быть медленной. Информатика 10-11 классы Алгоритмы. Перебор и рекурсия.
  • 11. Алгоритмы Перебор Рекурсия References Числа Фибоначчи: рекурсия Напишем функцию для вычисления n–ного числа Фибоначчи через рекурсию. (!) Сравните по времени, сколько вычисляется 50-е число Фибоначчи рекурсией и обычным циклом. Listing 3: Рекурсия для чисел Фибоначчи def f i b o n a c c i ( n ) r e t u r n 1 i f ( ( n==0) | | ( n==1)) f i b o n a c c i ( n−1)+ f i b o n a c c i ( n−2) end puts f i b o n a c c i (10) Информатика 10-11 классы Алгоритмы. Перебор и рекурсия.
  • 12. Алгоритмы Перебор Рекурсия References Легенда о Ханойских башнях Легенда гласит, что в Великом храме города Бенарас, под собором, отмечающим середину мира, находится бронзовый диск, на котором укреплены 3 алмазных стержня, высотой в один локоть и толщиной с пчелу. Давным-давно, в самом начале времён, монахи этого монастыря провинились перед богом Брахмой. Разгневанный, Брахма воздвиг три высоких стержня и на один из них возложил 64 диска. Брахма поместил на один из стержней 64 диска из чистого золота, причем так, что каждый меньший диск лежит на большем. Как только все 64 диска будут переложены со стержня, на который Брахма сложил их при создании мира, на другой стержень, башня вместе с храмом обратятся в пыль и под громовые раскаты погибнет мир. Информатика 10-11 классы Алгоритмы. Перебор и рекурсия.
  • 13. Алгоритмы Перебор Рекурсия References Задача о ханойских башнях Рис.: Источник: http://ru.wikipedia.org Информатика 10-11 классы Алгоритмы. Перебор и рекурсия.
  • 14. Алгоритмы Перебор Рекурсия References Задача о ханойских башнях Пример простого решения рекурсией без понимания работы алгоритма задача о ханойских башнях. Даны три стержня, на один из которых нанизаны несколько колец, причем кольца отличаются размером и лежат меньшее на большем. Задача состоит в том, чтобы перенести пирамиду из восьми колец за наименьшее число ходов. За один раз разрешается переносить только одно кольцо, причём нельзя класть большее кольцо на меньшее. Пример алгоритма для 3 колец: с 1 на 3, с 1 на 2, с 3 на 2, с 1 на 3, с 2 на 1, с 2 на 3, с 1 на 3. Задача 1. Написать программу с использованием рекурсии, которая выводит на экран алгоритм решения задачи для заданного количества колец. Задача 2. Посчитать и объяснить, сколько минимально потребуется монахам времени, чтобы выполнить условие Брахмы. Предположим, что на 1 перекладывание монахи тратят 1 минуту. Информатика 10-11 классы Алгоритмы. Перебор и рекурсия.
  • 15. Алгоритмы Перебор Рекурсия References References Все презентации доступны на http://school.smirik.ru! Вопросы, предложения, д/з: smirik@gmail.com Информатика 10-11 классы Алгоритмы. Перебор и рекурсия.