#!/usr/bin/env python import random def eval_cf(l, n): t = l[:n] t.reverse() return reduce(lambda a, b: 1.0 / a + b, t) def eval_rn_par(l, n): if n != 1: return 1.0 / (1.0 / l[0] + 1.0 / eval_rn_ser(l[1:], n - 1)) else: return l[0] def eval_rn_ser(l, n): if n != 1: return l[0] + eval_rn_par(l[1:], n-1) else: return l[0] def eval_rn(l, n): return eval_rn_ser(l, n) n = int(raw_input("Number of terms? ")) n = 12 if n >= 1: a = [2] if n >= 2: a.append(1) if n >= 3: for i in range(n-2): if (i % 3) == 0: a.append(2*i/3 + 2) else: a.append(1) #a = [2,1,2,1,1,4,1,1,8,1,1,10,1,1] b = [a[i]**-(2*(i%2)-1) for i in range(len(a))] x = eval_cf(a, len(a)) y = eval_rn(b, len(b)) #print a #print b print 'continued fraction: ', x print 'resistor network: ', y