注:转载自酷壳(http://coolshell.cn)
1 def factorial(x):
2 if x == 0:
3 return 1
4 else:
5 return x * factorial(x - 1)
6 print factorial(6)
1 def factorial(x):
2 result = 1
3 i = 2
4 while i <= x:
5 result = result * i
6 i = i + 1
7 return result
8 print factorial(6)
1 def fact(x): #{
2 result = i = 1;
3 while (i <= x): #{
4 result *= i;
5 i += 1;
6 #}
7 return result;
8 #}
9 print(fact(6))
1 @tailcall
2 def fact(x, acc=1):
3 if (x > 1): return (fact((x - 1), (acc * x)))
4 else: return acc
5 print(fact(6))
1 def Factorial(x):
2 res = 1
3 for i in xrange(2, x + 1):
4 res *= i
5 return res
6 print Factorial(6)
1 def fact(x):
2 return x > 1 and x * fact(x - 1) or 1
3 print fact(6)
1 f = lambda x: x and x * f(x - 1) or 1
2 print f(6)
1 import operator as op
2 import functional as f
3 fact = lambda x: f.foldl(op.mul, 1, xrange(2, x + 1))
4 print fact(6)
1 import sys
2 @tailcall
3 def fact(x, acc=1):
4 if x: return fact(x.__sub__(1), acc.__mul__(x))
5 return acc
6 sys.stdout.write(str(fact(6)) + '\n'
1 import c_math
2 fact = c_math.fact
3 print fact(6)
1 import c_maths
2 fact = c_maths.fact
3 print fact(6)
1 def factorial(x):
2 #-------------------------------------------------
3 #--- Code snippet from The Math Vault ---
4 #--- Calculate factorial (C) Arthur Smith 1999 ---
5 #-------------------------------------------------
6 result = str(1)
7 i = 1 #Thanks Adam
8 while i <= x:
9 #result = result * i #It's faster to use *=
10 #result = str(result * result + i)
11 #result = int(result *= i) #??????
12 result str(int(result) * i)
13 #result = int(str(result) * i)
14 i = i + 1
15 return result
16 print factorial(6)
1 import os
2 def fact(x):
3 os.system('factorial ' + str(x))
4 fact(6)
1 NULL = None
2 def CalculateAndPrintFactorialEx(dwNumber,
3 hOutputDevice,
4 lpLparam,
5 lpWparam,
6 lpsscSecurity,
7 *dwReserved):
8 if lpsscSecurity != NULL:
9 return NULL #Not implemented
10 dwResult = dwCounter = 1
11 while dwCounter <= dwNumber:
12 dwResult *= dwCounter
13 dwCounter += 1
14 hOutputDevice.write(str(dwResult))
15 hOutputDevice.write('\n')
16 return 1
17 import sys
18 CalculateAndPrintFactorialEx(6, sys.stdout, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL)
1 def new(cls, *args, **kwargs):
2 return cls(*args, **kwargs)
3
4 class Number(object):
5 pass
6
7 class IntegralNumber(int, Number):
8 def toInt(self):
9 return new (int, self)
10
11 class InternalBase(object):
12 def __init__(self, base):
13 self.base = base.toInt()
14
15 def getBase(self):
16 return new (IntegralNumber, self.base)
17
18 class MathematicsSystem(object):
19 def __init__(self, ibase):
20 Abstract
21
22 @classmethod
23 def getInstance(cls, ibase):
24 try:
25 cls.__instance
26 except AttributeError:
27 cls.__instance = new (cls, ibase)
28 return cls.__instance
29
30 class StandardMathematicsSystem(MathematicsSystem):
31 def __init__(self, ibase):
32 if ibase.getBase() != new (IntegralNumber, 2):
33 raise NotImplementedError
34 self.base = ibase.getBase()
35
36 def calculateFactorial(self, target):
37 result = new (IntegralNumber, 1)
38 i = new (IntegralNumber, 2)
39 while i <= target:
40 result = result * i
41 i = i + new (IntegralNumber, 1)
42 return result
43
44 print StandardMathematicsSystem.getInstance(new (InternalBase, new (IntegralNumber, 2))).calculateFactorial(new (IntegralNumber, 6))
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。