Форум сайта python.su
привет программерам :)
выручаю человека, помогаю задачку решить) мы немного нубы по сложным операторам ибо не научили нас ещё, поэтому обходимся простыми и решаем через владивосток :D человек близок к ответу, но ни в какую…Вобщем вот задача:
Описать функцию Fact2(N) целого типа, вычисляющую значение “двойного факториала”:
N!! = 1•3•5•…•N, если N — нечетное,
N!! = 2•4•6•…•N, если N — четное (N > 0 — параметр целого типа).
С помощью этой функции вычислить двойные факториалы десяти данных чисел.
вот его наработки:
b=input('vvedite')
if b%2==0:
n=range(b)
s=n
f=reduce(lambda res, x: res*x, s,1)
print f*n
else:
a=1
while a<=b:
a=a*(a+2)
print ('factorial raven',a)
Второй вариант:
N=input('vvedite')
if N>0:
if N%2==0:
a=0
while a<=N:
for i in range(N):
a=a*(a+2)
i=i+1
print ‘factorial =’,a
else:
a=1
while a<=N:
for i in range(N):
a=(a+2)
i=i+1
print ‘factorial raven’,a
сначала нада def Fact2(N): потом описание функции…
вобщем направьте нас на путь истинный :)
Офлайн
1. Используйте тег “code” для кода.
2. Для факториала есть более “канонічний” способ - рекурсия. В вашем случае рекурсия с шагом -2.
Отредактировано (Фев. 2, 2010 15:52:36)
Офлайн
вибачте, але не зовсiм зрозумiло))) вроде знакомые определения, но знания не позволяют интерпретировать это в программе, мы совсем начинашки, даж спрашивать не у кого, на факультете только наша группа питонит, а качество обучения информатике не айс, преподу наплевать(( так што буду признателен если обьяснения будут в виде кода :)
Офлайн
Первая ссылка в гугле.
Только шаг другой.
Офлайн
дуже вдячний :)
Офлайн
Ростіть широкі.
Офлайн
:D :D дякую аш пiдскакую
Офлайн
пiшiтi на руськом plz. Особенно если хотите чтобы вам отвечали не только ваши соотечественники :)
Офлайн
вибачте…гхм…изиняюссь) никак не выходит штот :( действительно, питон чот капризничает, то на одном компе открывает на другом нет, то очевидных операций не хочет делать(
Офлайн
вот наработки:
def factorial(x):
if x == 0:
return 1
else:
return x * factorial(x - 1)
ещё:
def factorial(x):
return 1 if x==0 else reduce(lambda x,y:x*y,xrange(1,x+1))
и есть на бэйзике
Офлайн