Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 12

Тема: Как обозначить факториал в питоне: вопросы и ответы

  1. Как обозначить факториал в питоне: вопросы и ответы

    Здорова, народ! Тут вот собрался написать функцию вычисления факториала в питоне, но что-то застопорился. Нашел пару методов в инете, но не уверен, какой лучше. Я в коде пока не бог, так что хотелось бы поинтересоваться у вас: как вы обозначаете факториал в питоне? Поделитесь, кто как реализует эту штуковину? Может, кто-то знает самый оптимальный способ. Заранее благодарю за любые советы и примеры кода! Код приветствуется в BB-code или как вам удобнее. Особый респект за простые и понятные методы - все еще учусь ?!



  2. Ждём вас в нашем чате в Телеграмм ==>> @pythoneer_chat

    А ТАКЖЕ: Канал о Python, статьи и книги ==>>
    @pythoneer_ru

  3. Привет! Самый простой метод - через рекурсию. Смотри код:

    Программный код:
    def factorial(n):
        if 
    == 0:
            return 
    1
        
    else:
            return 
    factorial(n-1
    Этот метод наглядный, но аккуратней - глубокая рекурсия может завалить стек. Если данных много, лучше цикл использовать!

  4. Цитата Сообщение от donerec
    Привет! Самый простой метод - через рекурсию. Смотри код:

    Программный код:
    def factorial(n):
        if 
    == 0:
            return 
    1
        
    else:
            return 
    factorial(n-1
    Этот метод наглядный, но аккуратней - глубокая рекурсия может завалить стек. Если данных много, лучше цикл использовать!
    Чет хорошая тема с рекурсией, но ты прав, глубокая рекурсия - это беда. Оптимизация тема из математики, рулит.

  5. Всем привет! Если прям необходимо что-то суперэффективное, можно сделать так:

    Программный код:
    def factorial(n):
        
    result 1
        
    for i in range(21):
            
    result *= i
        
    return result 
    Этот метод все еще простой и понятный, но не использует рекурсию, значит стек точно не кончится.

  6. Цитата Сообщение от Евгения
    Всем привет! Если прям необходимо что-то суперэффективное, можно сделать так:

    Программный код:
    def factorial(n):
        
    result 1
        
    for i in range(21):
            
    result *= i
        
    return result 
    Этот метод все еще простой и понятный, но не использует рекурсию, значит стек точно не кончится.
    Отличный способ. Читал, что это более эффективно по памяти, чем рекурсия.

  7. Йо! Используй библиотеку math, там уже все готово! Ленивым как раз

    Программный код:
    import math
    print(math.factorial(5)) 
    Лишь строчка кода, и готово. Супер удобно, если не хочешь велосипед изобретать.

  8. Цитата Сообщение от ElenaWizard
    Йо! Используй библиотеку math, там уже все готово! Ленивым как раз

    Программный код:
    import math
    print(math.factorial(5)) 
    Лишь строчка кода, и готово. Супер удобно, если не хочешь велосипед изобретать.
    Хаха, да, модули наше все! Надо будет заглянуть в math модуль, спасибо за подсказку.

  9. Чекни вариант с мемоизацией, мощная штука:

    Программный код:
    from functools import lru_cache
      
    @lru_cache(maxsize=None)
    def factorial(n):
        if 
    == 0:
            return 
    1
        
    else:
            return 
    factorial(n-1
    Mемоизация хранит результаты вызовов, и функция быстрее бегает. Главное - не забудь декоратор @lru_cache, чтобы заработало!

  10. Цитата Сообщение от Иван Зубов
    Чекни вариант с мемоизацией, мощная штука:

    Программный код:
    from functools import lru_cache
      
    @lru_cache(maxsize=None)
    def factorial(n):
        if 
    == 0:
            return 
    1
        
    else:
            return 
    factorial(n-1
    Mемоизация хранит результаты вызовов, и функция быстрее бегает. Главное - не забудь декоратор @lru_cache, чтобы заработало!
    Во, мемоизация четко! Такая тема для оптимизации рекурсивных методов - просто огонь. Спасиб за ноу-хау!

Страница 1 из 2 12 ПоследняяПоследняя