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

Αν προσέξεις θα δεις ότι κάνει πρόσθεση κι όχι πολλαπλασιασμό...Πώς όμως μπορείς να υπολογίσεις πραγματικά (κι όχι εσφαλμένα) παραγοντικό μεγάλου αριθμού;

Ξέρω να βγάλω πρόγραμμα για παραγοντικό αλλά αν ισχύει μόνο για μικρούς αριθμούς....



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)