Комментарии •

  • @dv7045
    @dv7045 4 года назад +2

    Спасибо за твой труд!

  • @mr.Ponizovsky
    @mr.Ponizovsky 2 года назад

    30:24 - можно так записать?:
    int f(int n) {
    if((n == 0) || (n == 1))
    return n;
    return f(n-1) + f(n-2);
    }
    Буквально пару часов назад читал про арифметику(Столяров А.В. - Программирование: введение в профессию. Системы и сети(ДМК Пресс, 2021); стр.44-46)

    • @mr.Ponizovsky
      @mr.Ponizovsky 2 года назад

      А за видео - благодарю!)

    • @mr.Ponizovsky
      @mr.Ponizovsky 2 года назад

      А когда узнал про приоритеты операций, то так бы записал:
      int f(int n) {
      if(n == 0 || n == 1)
      return n;
      return f(n-1) + f(n-2);
      }
      Читать там же, но стр.52

  • @dpilot2057
    @dpilot2057 4 года назад

    Cи теперь високоуровневая?)

  • @MotodorXL12
    @MotodorXL12 4 года назад

    Яп без циклов оО
    Это предусмотрено в угоду памяти? Даже в простеньких скриптовых яп есть циклы.

    • @CryptoFunIT
      @CryptoFunIT 4 года назад +6

      Тут суть немного в другом. Сама концепция языков с функциональной парадигмой пытается придерживаться принципа не иметь состояний. Из этого следует то, что в чисто функциональных языках как таковых переменных не существует (а точнее такие языки пытаются избегать их) и соответственно не существует циклов, так как они расчитаны на изменение состояний. Единственный подход в таких языках - это рекурсия, но и здесь стоит сказать, что рекурсия должна быть хвостовая (если это возможно), и тогда на уровне компиляции в машинный код будет генерироваться не рекурсивная функция, а функция с итерациями, то-есть имеющая обычный цикл (язык должен обладать поддержкой хвостовой рекурсии. Почти все функциональные языки обладают данной поддержкой).
      Также стоит сказать, что если мы рассматриваем рекурсию относительно циклов, то цикл является лишь подмножеством рекурсии. Иными словами, при помощи рекурсий можно реализовать любой цикл, но нельзя реализовать при помощи циклов любую рекурсию.