Как вы делаете двойной факториал в питоне?
Я застрял на этом вопросе в течение очень долгого времени. Мне удалось сделать один рекурсивный факториал.
def factorial(n): if n == 0: return 1 else: return n * factorial(n-1)
Двойной факториал Для четного целого числа n двойной факториал представляет собой произведение всех четных положительных целых чисел, меньших или равных n. Для нечетного целого числа p двойной факториал представляет собой произведение всех нечетных положительных целых чисел, меньших или равных p. Если n четно, то n!! = n*(n — 2)*(n — 4)*(n — 6)* . *4*2 Если р нечетно, то p!! = p*(p — 2)*(p — 4)*(p — 6)* . *3*1 Но я понятия не имею, как сделать двойной факториал. Любая помощь?
Посмотрите, что меняется между ними: n-1 становится n-2 , а конечное число (базовый регистр) меняется с 0 на одно из 2 или 1. — person moinudin   schedule 19.01.2011
Когда я увидел этот вопрос, я сделал двойной дубль. — person President James K. Polk   schedule 20.01.2011
Ответы (10)
Разве это не то же самое, что факториал с другим конечным условием и другим параметром для рекурсивного вызова?
def doublefactorial(n): if n
Если n четное, то он остановится, когда n == 0 . Если n нечетное, то оно остановится, когда n == -1 .
Вы захотите вызвать doublefactorial в рекурсивном вызове. Сделал ту же ошибку. - person LoveAndCoding; 19.01.2011
Вы можете остановиться на 1 вместо -1. Я знаю, минимальное улучшение, но все же. 🙂 - person Lennart Regebro; 19.01.2011
Проблема здесь в том, что двойной факториал определен для отрицательных действительных чисел (-1)!! = 1, (-3)!! = -1 (даже отрицательные целые числа (такие как -2, -4. ) должны иметь решение как +/- inf), так что. что-то плохо пахнет во всех решениях для отрицательных чисел. Если кто-то хочет определить двойной факториал для всех вещественных чисел, эти решения не работают. Решение состоит в том, чтобы определить двойной факториал с помощью гамма-функции.
import scipy.special as sp from numpy import pi def dfact(x): n = (x + 1.)/2. return 2.**n * sp.gamma(n + 0.5)/(pi**(0.5))
Начиная с Python 3.8 , мы можем использовать функцию prod из math , который вычисляет произведение всех элементов в итерируемом объекте, что в нашем случае это range(n, 0, -2) :
import math math.prod(range(n, 0, -2))
Однако также интересно отметить, что двойной факториал можно выразить через «нормальный» факториал. Для нечетных чисел, n!! = (2*k)! / (2**k * k!) где k = (n+1)/2. Для четных аргументов n=2k, хотя это и не согласуется с обобщением на сложные аргументы, выражение проще, n!! = (2k)!! = 2*k * k!. Все это означает, что вы можете писать код с помощью функции factorial из стандартной математической библиотеки, что всегда приятно:
import math fact = math.factorial def dfact(n): if n % 2 == 1: k = (n+1)/2 return fact(2*k) / (2**k * fact(k)) else: return 2**k * fact(k)
Теперь этот код, очевидно, не очень эффективен для больших n, но он весьма поучителен. Что еще более важно, поскольку сейчас мы имеем дело со стандартными факториалами, это очень хорошая отправная точка для оптимизации при работе с действительно большими числами. Вы пытаетесь использовать логарифмы или гамма-функции, чтобы получить приблизительные двойные факториалы для больших чисел.
def doublefactorial(n): if n in (0, 1): return 1 else: return n * doublefactorial(n-2)
def double_fact(number): if number==0 or number==1: return 1 else: return number*double_fact(number-2)
def factorial(n): if n == 0 or n == 1: return 1 else: return n * factorial(n-2)
Не совсем. Вам нужно настроить базовый регистр, иначе он не завершается для нечетных чисел. - person ; 19.01.2011
Вам нужно будет остановиться на значении меньше 0, иначе нечетное значение войдет в бесконечный цикл (или в конечном итоге попадет в stackoverflow) - person LoveAndCoding; 19.01.2011
x = n for y in range(n-2, 1, -2): x*=y
Очевидно, вы также можете сделать это рекурсивно, но в чем смысл? Примеры такого рода, реализованные с использованием рекурсии, хороши при использовании всех рекурсивных языков, но с императивным языком простые инструменты, такие как рекурсия, всегда выглядят более сложными, чем необходимо, в то время как рекурсия может быть реальным упрощением при работе с фундаментально рекурсивными структурами, такими как деревья.
Вычислить двойной факториал
Составить программу вычисления двойного факториала натурального числа n y=n!!
n!! = 1*3*5. *n, если n непарное
n!! = 2*4*6. *n, если n парное
Помогите пожалуйста объяснить как составить программу с помощью for i in range
Вычислить двойной факториал числа
Написать программу, которая считает двойной факториал
Двойной факториал
Описать функцию Fact2(N ) вещественного типа, вычисляющую двойной факториал: N !! = 1·3·5·. .
Вычислить n!! (двойной факториал)
Можете, пожалуйста, сделать проверку через онлайн калькуляторы (wolfram alpha и т.д), а то я совсем.
Вычислить двойной факториал N
Дано целое число N (> 0). Найти двойной факториал N: N!! = N·(N-2)·(N-4)·. (последний.
Сообщение было отмечено alinabelayaa как решение
Решение
n = int(input("N: ")) start = 1 if n % 2 else 2 for i in range(start + 2, n + 1, 2): start *= i print(start)
Ну не дано мне программистом быть, что поделаешь
Как не стараюсь, все равно понимаю тему только в теории
n = int(input()) q = 1 for w in range(1, n + 1): if n % 2 != 0: if w % 2 != 0: q *= w if n % 2 == 0: if w % 2 == 0: q *= w print(q)
Romantia, что за бред Вы тут написали? В первом сообщении наптсано, как вычисляется двойной факториал.
n = int(input('n = ')) res = 1 while n > 0: res *= n n -= 2 print(res)
Вычислить двойной факториал
привет всем. Суть задания такова найти для N значение (2N)!! нашел программу, но она работает для.
Вычислить двойной факториал
Написал программку под задание: Для числа n вывести произведение "n!!" с условием: если число.
Вычислить двойной факториал
Описать функцию Fact2(N) вещественного типа, вычисляющую двойной факториал: N!! = 1*3*5*…*N, .
Вычислить двойной факториал
Всем Привет! Помогите пожайлуста разобраться в 2 задачах: 1.найти n!!(двойной факториал) числа n.
Вычислить двойной факториал
Составьте, пожалуйста, программу для вычисления двойного факториала (2n+1)!! (например.
Вычислить двойной факториал
Написать программу в с++ Реализация циклов. В программе исходные данные должны вводиться с.
Функция двойного факториала на Python
Описать функцию Fact2(N) целого типа, вычисляющую значение "двойного факториала": N!! = 1•3•5•. •N, если N — нечетное, N!! = 2•4•6•. •N, если N — четное (N > 0 — параметр целого типа). С помощью этой функции вычислить двойные факториалы десяти данных чисел.
Добавлено через 1 час 25 минут
Все разобрался извините за беспокойство
Функция двойного факториала
Описать функцию Fact2(N) целого типа, вычисляющую значение "двойного факториала": N!! =.
Функция двойного факториала
Нужно написать функцию длинного без знака целого типа , которая будет находить двойной факториал.
Функция двойного факториала
Описать функцию Fact 2 (N) вещественного типа, вычисляющую значение двойного факториала .
Функция вычисления двойного факториала
Функция вычисления двойного факториала: N!! = N * (N - 2) * (N - 4) . Произведение натуральных.
Сообщение было отмечено как решение
Решение
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
n=input ("Введите N ") def factorial(x): a=1 if n%2==0: y = 2 while y n: a = a* y y = y + 2 return a else: y = 3 while y n: a = a* y y = y + 2 return a print factorial("")
Рекурсивная функция для вычисления двойного факториала
программа, которая содержит рекурсивную функцию, которая вычисляет: Р (п) = 1 * 3 * 5 * 7 * 9 * .
Описать рекурсивные функции вычисляющие значения факториала и двойного факториала
Написать блок схему и программу согласно заданию. Описать рекурсивные функции Fact(n) и Fact2(N).
Функция, вычисляющая значение "двойного факториала"
Помогите сделать программу по заданию: Описать функцию Fact2(N) целого типа, вычисляющую.
Вычисление двойного факториала
Дано натуральное число n, n!! означает 1x3x5x. xn для нечетного n и 2x4x6x. xn для четного n.
Вычисление двойного факториала
Помогите пожалуйста,исправить ошибку. Вычисление двойного факториала (2n+1)!! (например.
Раскрытие двойного факториала
Здравствуйте. (2n+1)!!=3*5*7*9. *(2n+1) а чему равен двойной факториал ? (2(n+1)+1)!!=5*7*9.
Двойной факториал
Описать функцию Fact2(N ) вещественного типа, вычисляющую двойной
факториал:
N !! = 1·3·5·. . .·N, если N — нечетное;
N !! = 2·4·6·. . .·N, если N — четное.
Помогите пожалуйста на питоне. Заранее огромное спасибо 3)
Вычислить двойной факториал
Составить программу вычисления двойного факториала натурального числа n y=n!! n!! = 1*3*5. *n.
Вычислить двойной факториал числа
Написать программу, которая считает двойной факториал
Известен факториал числа. Найти это число (факториал числа n равен 1 2 . n )
Известен факториал числа. Найти это число (факториал числа n равен 1 2 . n ) Я написала.
Описать рекурсивные функции вещественного типа, вычисляющие факториал и двойной факториал заданного числа
Описать рекурсивные функции Fact(N) и Fact2(N) вещественного типа, вычисляющие значения факториала.
def fact2(n): answ = 1 for i in range((1 if n % 2 else 2), n + 1, 2): print(i) answ *= i return answ
def double_fact(n): p=1 while(n>=1): p=p*n n-=2 return p print(double_fact(7))
Двойной факториал
N!! = N*(N–2)*(N–4)*… (N > 0 — параметр целого типа; последний сомножитель в произведении равен 2.
Двойной факториал
Здравствуйте, Товарищи. Поискал на форуме подобную задачку, увы, не нашел. Помогите составить.
Двойной факториал
Подскажите, пожалуйста, как этот фрагмент перенести в код C++?
Двойной факториал
Дано целое число N (> 0). Найти двойной факториал N: N!! = N·(N–2)·(N–4)·… (последний сомножитель.
Двойной факториал.
На своей практике впервые вижу такое задание. Самостоятельно решить его я не смогу, нужна помощь в.
Вычислить двойной факториал числа
Вычислить двойной факториал
Составить программу вычисления двойного факториала натурального числа n y=n!! n!! = 1*3*5. *n.
Известен факториал числа. Найти это число (факториал числа n равен 1 2 . n )
Известен факториал числа. Найти это число (факториал числа n равен 1 2 . n ) Я написала.
Двойной факториал
Описать функцию Fact2(N ) вещественного типа, вычисляющую двойной факториал: N !! = 1·3·5·. .
Вычислить двойной факториал натурального числа
Напишите программу, которая вычисляет двойной факториал натурального числа N ( 1 ≤ N.
n = int(input()) s = 1 f = 1 for i in range(1, n+1): s *= i print(s, '!') for j in range(1, s+1): f *= j print(f, '!!')
n = int(input("Введите n: ")) start = 1 if n % 2 else 2 for i in range(start + 2, n + 1, 2): start *= i print("Двойной факториал:", start)
Вычислить двойной факториал числа, введенного с клавиатуры
Разработайте скрипт на языке cmd, реализующий следующую задачу: выведите двойной факториал числа.
Для натурального числа n вычислить двойной факториал
Пусть n натуральное число и пусть n!! означает 1*3*5*. *n для нечетного n и 2*4*. *n для четного.
Описать рекурсивные функции вещественного типа, вычисляющие факториал и двойной факториал заданного числа
Описать рекурсивные функции Fact(N) и Fact2(N) вещественного типа, вычисляющие значения факториала.
Вычислить двойной факториал
Описать функцию Fact2(N) вещественного типа, вычисляющую двойной факториал: N!! = 1*3*5*…*N, .
Вычислить двойной факториал
Всем Привет! Помогите пожайлуста разобраться в 2 задачах: 1.найти n!!(двойной факториал) числа n.
Вычислить двойной факториал
Написал программку под задание: Для числа n вывести произведение "n!!" с условием: если число.
Вычислить двойной факториал
Помогите пожалуйста сделать задание (Вариант 6). Заранее спасибо.