public FibonacciResult Fibonacci(FibonacciRequest request) { _calculatedFibonaccis = new Dictionary <int, int>(); var result = new FibonacciResult(); if (request.Number > 40) { throw new ApplicationException(string.Format("The submitted value [{0}] is greater than the max value allowed [10]!", request.Number)); } var data = new FibonacciValue(); try { data.Formula = request.UseRecursiveAlgorithm ? "f(n) = f(n - 1) + f(n - 2)" : string.Format("f(n) = (phi^n - ( -1^n / phi^n )) / √5{0}[where phi = (1 + √5) / 2]", Environment.NewLine); data.Value = request.UseRecursiveAlgorithm ? FibonacciRecursive(request.Number) : FibonacciNonRecursive(request.Number); data.Iterations = _iterationCounter; result.Data = data; } catch (Exception ex) { result = new FibonacciResult { Errors = ex.Message }; } return(result); }
public string FibonacciWebGet(string number, string useRecursiveAlgorithm) { // Convert the parameters to the request object and pass int integer; if (!int.TryParse(number, out integer)) { integer = 0; } var request = new FibonacciRequest(integer, useRecursiveAlgorithm.ToLower() == "true"); return(FibonacciWebPost(request)); }
public string FibonacciWebPost(FibonacciRequest request) { // Return a JSON version of the result object return(new JavaScriptSerializer().Serialize(Fibonacci(request))); }