導讀:下面程式碼來自 fmeyer ,列舉了各種程式設計師所寫的階乘演算法程式碼,甚至包括網頁設計師的。 :)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 |
; html-script: false ]#新手程式設計師 def factorial(x): if x == 0: return 1 else: return x * factorial(x - 1) print factorial(6) #有一年 Pascal 經驗的程式設計師 def factorial(x): result = 1 i = 2 while i <= x: result = result * i i = i + 1 return result print factorial(6) #有一年 C 經驗的程式設計師 def fact(x): #{ result = i = 1; while (i <= x): #{ result *= i; i += 1; #} return result; #} print(fact(6)) #有一年 SICP 經驗的程式設計師 @tailcall def fact(x, acc=1): if (x > 1): return (fact((x - 1), (acc * x))) else: return acc print(fact(6)) #有一年 Python 經驗的程式設計師 def Factorial(x): res = 1 for i in xrange(2, x + 1): res *= i return res print Factorial(6) #懶惰的Python程式設計師 def fact(x): return x > 1 and x * fact(x - 1) or 1 print fact(6) #更懶惰的Python程式設計師 f = lambda x: x and x * f(x - 1) or 1 print f(6) #專家級Python程式設計師 import operator as op import functional as f fact = lambda x: f.foldl(op.mul, 1, xrange(2, x + 1)) print fact(6) #Python 黑客 import sys @tailcall def fact(x, acc=1): if x: return fact(x.__sub__(1), acc.__mul__(x)) return acc sys.stdout.write(str(fact(6)) + '\n') #專家級程式設計師 import c_math fact = c_math.fact print fact(6) #英國專家級程式設計師 (譯註:在英式英語中,“數學”的簡寫,多用“maths”,不是“math"。) import c_maths fact = c_maths.fact print fact(6) #網頁設計師 def factorial(x): #------------------------------------------------- #--- 這段程式碼是從 Math Vault 那弄過來滴--- #--- 計算階乘 (C)亞瑟·史密斯 1999年--- #------------------------------------------------- result = str(1) i = 1 #謝謝亞當 while i <= x: #result = result * i #It's faster to use *= #result = str(result * result + i) #result = int(result *= i) #?????? result str(int(result) * i) #result = int(str(result) * i) i = i + 1 return result print factorial(6) #Unix 程式設計師 import os def fact(x): os.system('factorial ' + str(x)) fact(6) #Windows 程式設計師 NULL = None def CalculateAndPrintFactorialEx(dwNumber, hOutputDevice, lpLparam, lpWparam, lpsscSecurity, *dwReserved): if lpsscSecurity != NULL: return NULL #Not implemented dwResult = dwCounter = 1 while dwCounter <= dwNumber: dwResult *= dwCounter dwCounter += 1 hOutputDevice.write(str(dwResult)) hOutputDevice.write('\n') return 1 import sys CalculateAndPrintFactorialEx(6, sys.stdout, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL) #企業程式設計師 def new(cls, *args, **kwargs): return cls(*args, **kwargs) class Number(object): pass class IntegralNumber(int, Number): def toInt(self): return new (int, self) class InternalBase(object): def __init__(self, base): self.base = base.toInt() def getBase(self): return new (IntegralNumber, self.base) class MathematicsSystem(object): def __init__(self, ibase): Abstract @classmethod def getInstance(cls, ibase): try: cls.__instance except AttributeError: cls.__instance = new (cls, ibase) return cls.__instance class StandardMathematicsSystem(MathematicsSystem): def __init__(self, ibase): if ibase.getBase() != new (IntegralNumber, 2): raise NotImplementedError self.base = ibase.getBase() def calculateFactorial(self, target): result = new (IntegralNumber, 1) i = new (IntegralNumber, 2) while i <= target: result = result * i i = i + new (IntegralNumber, 1) return result print StandardMathematicsSystem.getInstance(new (InternalBase, new (IntegralNumber, 2))).calculateFactorial(new (IntegralNumber, 6)) |
下面程式碼是kohashi給出的,他說是在郵局看到的。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#VBA 程式設計師 def factorial(x): if x == 0: return 1 if x == 1: return x if x == 2: return x * (x-1) if x == 3: return x * (x-1) * (x-2) if x == 4: return x * (x-1) * (x-2) * (x-3) if x == 5: return x * (x-1) * (x-2) * (x-3) * (x-4) if x == 6: return x * (x-1) * (x-2) * (x-3) * (x-4) * (x-5) print factorial(6) |
打賞支援我翻譯更多好文章,謝謝!
打賞譯者
打賞支援我翻譯更多好文章,謝謝!
任選一種支付方式