// Modules open System // Recursive definition of Fibonacci numbers let rec fib n = match n with | 0 -> 0 | 1 -> 1 | _ -> fib (n-1) + fib (n-2) let rec fibSmart n = match n with | n when n < 0 -> failwith (sprintf "Error: %d is less than 0" n) | (0|1) -> n | _ -> fibSmart (n-1) + fibSmart (n-2) // Read from stdin and print result printfn "Inserisci l'indice del numero di fibonacci che vuoi calcolare:\n" let i = Console.ReadLine() |> int printfn "%A" (fib (i)) printfn "%A" (fibSmart (i))