Agents-MCP-Hackathon/Python-Code-to-Diagram-Generator-MCP
6
1"""2Fibonacci computation functions for testing function analysis.3"""4 5def fibonacci_recursive(n):6 """Calculate fibonacci number using recursion."""7 if n <= 1:8 return n9 return fibonacci_recursive(n - 1) + fibonacci_recursive(n - 2)10 11 12def fibonacci_iterative(n):13 """Calculate fibonacci number using iteration."""14 if n <= 1:15 return n16 17 a, b = 0, 118 for _ in range(2, n + 1):19 a, b = b, a + b20 return b21 22 23def fibonacci_memoized(n, memo=None):24 """Calculate fibonacci number using memoization."""25 if memo is None:26 memo = {}27 28 if n in memo:29 return memo[n]30 31 if n <= 1:32 memo[n] = n33 return n34 35 memo[n] = fibonacci_memoized(n - 1, memo) + fibonacci_memoized(n - 2, memo)36 return memo[n]37 38 39def fibonacci_sequence(count):40 """Generate a sequence of fibonacci numbers."""41 sequence = []42 for i in range(count):43 sequence.append(fibonacci_iterative(i))44 return sequence45 46 47def compare_fibonacci_methods(n):48 """Compare different fibonacci calculation methods."""49 import time50 51 methods = [52 ("Recursive", fibonacci_recursive),53 ("Iterative", fibonacci_iterative), 54 ("Memoized", fibonacci_memoized)55 ]56 57 results = {}58 for name, func in methods:59 start_time = time.time()60 result = func(n)61 end_time = time.time()62 results[name] = {63 'result': result,64 'time': end_time - start_time65 }66 67 return results68 69 70def validate_fibonacci_result(n, result):71 """Validate if a fibonacci result is correct."""72 if n <= 1:73 return result == n74 75 # Use iterative method as baseline for validation76 expected = fibonacci_iterative(n)77 return result == expected78 79 80if __name__ == "__main__":81 n = 1082 print(f"Fibonacci({n}) using different methods:")83 84 results = compare_fibonacci_methods(n)85 for method, data in results.items():86 print(f"{method}: {data['result']} (took {data['time']:.6f} seconds)")87 88 print(f"\nFirst 15 fibonacci numbers: {fibonacci_sequence(15)}")89 