Δημοσιεύτηκε: 02 Ιούλ 2010, 03:44
από lostinmyworld
Αυτό υπολογίζει την ακολουθία fibonacci κι όχι το παραγοντικό.. :geek:
Αν προσέξεις θα δεις ότι κάνει πρόσθεση κι όχι πολλαπλασιασμό...Πώς όμως μπορείς να υπολογίσεις πραγματικά (κι όχι εσφαλμένα) παραγοντικό μεγάλου αριθμού; :?
Ξέρω να βγάλω πρόγραμμα για παραγοντικό αλλά αν ισχύει μόνο για μικρούς αριθμούς.... :?: :problem: :crazy:


Dimitris έγραψε:Χα, σε έπιασα απρόσεκτο Ιδομενέα. Η λέξη κλειδί είναι metaprogramming και decorators (σε python ξέρω πώς γίνεται αλλά γίνεται και σε άλλες γλώσσες) Δες αυτό:


Κώδικας: Επιλογή όλων
import sys

sys.setrecursionlimit(10000000)

class Memo(object):
__cache={}
def __init__(self, func):
self.__func = func
def __call__(self,*args):
try:
return self.__cache[args]
except KeyError:
value = self.__func(*args)
Memo.__cache[args] = value
return value

@Memo
def fibonacci(n):
if n in (0,1): return n
return fibonacci(n-1) + fibonacci(n-2)

print fibonacci(2800)