Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
19
Task/Fibonacci-sequence/Lean/fibonacci-sequence-1.lean
Normal file
19
Task/Fibonacci-sequence/Lean/fibonacci-sequence-1.lean
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
-- Our first implementation is the usual recursive definition:
|
||||
def fib1 : ℕ → ℕ
|
||||
| 0 := 0
|
||||
| 1 := 1
|
||||
| (n + 2) := fib1 n + fib1 (n + 1)
|
||||
|
||||
|
||||
-- We can give a second more efficient implementation using an auxiliary function:
|
||||
def fib_aux : ℕ → ℕ → ℕ → ℕ
|
||||
| 0 a b := b
|
||||
| (n + 1) a b := fib_aux n (a + b) a
|
||||
|
||||
def fib2 : ℕ → ℕ
|
||||
| n := fib_aux n 1 0
|
||||
|
||||
|
||||
-- Use #eval to check computations:
|
||||
#eval fib1 20
|
||||
#eval fib2 20
|
||||
19
Task/Fibonacci-sequence/Lean/fibonacci-sequence-2.lean
Normal file
19
Task/Fibonacci-sequence/Lean/fibonacci-sequence-2.lean
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
-- Naive version
|
||||
def fib1 (n : Nat) : Nat :=
|
||||
match n with
|
||||
| 0 => 0
|
||||
| 1 => 1
|
||||
| (k + 2) => fib1 k + fib1 (k + 1)
|
||||
|
||||
-- More efficient version
|
||||
def fib_aux (n : Nat) (a : Nat) (b : Nat) : Nat :=
|
||||
match n with
|
||||
| 0 => b
|
||||
| (k + 1) => fib_aux k (a + b) a
|
||||
|
||||
def fib2 (n : Nat) : Nat :=
|
||||
fib_aux n 1 0
|
||||
|
||||
-- Examples
|
||||
#eval fib1 20
|
||||
#eval fib2 20
|
||||
Loading…
Add table
Add a link
Reference in a new issue