diff --git a/tarea6/catalan.py b/tarea6/catalan.py index c582b93..1ad3916 100644 --- a/tarea6/catalan.py +++ b/tarea6/catalan.py @@ -9,34 +9,32 @@ def num_catalan(n): global counter_cat counter_cat += 1 - if n == 1: + if n <= 1: return 1 - if n == 2: - return 2 else: counter = 0 - for i in range(1,n-1): - counter += num_catalan(i)* num_catalan(n-i) + for i in range(n): + counter += num_catalan(i)* num_catalan(n-i-1) return counter def num_catalan_mem(n, Matrix): global counter_cat_mem counter_cat_mem += 1 - if n == 1: + if n <= 1: return 1 - if n == 2: - return 2 else: counter = 0 - for i in range(1,n-1): + for i in range(n): cat_i = Matrix[i] if Matrix[i] != -1 else num_catalan_mem(i, Matrix) - cat_n_1 = Matrix[n-i] if Matrix[n-i] != -1 else num_catalan_mem(n-i, Matrix) + Matrix[i] = cat_i + cat_n_1 = Matrix[n-i-1] if Matrix[n-i-1] != -1 else num_catalan_mem(n-i-1, Matrix) + Matrix[n-i-1] = cat_n_1 counter += cat_i *cat_n_1 return counter def main(recursivo = False): - n_max = 200 + n_max = 100 if recursivo: global counter_cat for n in range(1, n_max): @@ -50,8 +48,8 @@ def main(recursivo = False): Matrix = [-1 for x in range(n+1)] counter_cat_mem = 0 start = time.time() - num_catalan_mem(n, Matrix) - print "%d %s %d"% (n, time.time() - start, counter_cat_mem) + res = num_catalan_mem(n, Matrix) + print "%d %s %d %d"% (n, time.time() - start, counter_cat_mem, res) if __name__ == '__main__': argv = sys.argv[1:] @@ -59,4 +57,5 @@ def main(recursivo = False): if opts: #Si el usuario mando alguna bandera main(True) else: + print "CHo" main(False)