From 3f37a1ccb515919c934af24298b968b4c44786d7 Mon Sep 17 00:00:00 2001 From: Louis Date: Fri, 15 Sep 2023 16:17:18 +0200 Subject: [PATCH] vault backup: 2023-09-15 16:17:18 --- .obsidian/workspace.json | 10 +++++----- Algo/Séminaire/Chapter 5 - Recursivity.md | 18 +++++++++++++++++- Algo/Séminaire/Exercices seminaire.md | 10 +++++++++- 3 files changed, 31 insertions(+), 7 deletions(-) diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index 03e1625..43c79c4 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -13,7 +13,7 @@ "state": { "type": "markdown", "state": { - "file": "Algo/Séminaire/Chapter 5 - Recursivity.md", + "file": "Algo/Séminaire/Exercices seminaire.md", "mode": "source", "source": false } @@ -97,7 +97,7 @@ "state": { "type": "backlink", "state": { - "file": "Algo/Séminaire/Chapter 5 - Recursivity.md", + "file": "Algo/Séminaire/Exercices seminaire.md", "collapseAll": false, "extraContext": false, "sortOrder": "alphabetical", @@ -114,7 +114,7 @@ "state": { "type": "outgoing-link", "state": { - "file": "Algo/Séminaire/Chapter 5 - Recursivity.md", + "file": "Algo/Séminaire/Exercices seminaire.md", "linksCollapsed": false, "unlinkedCollapsed": true } @@ -137,7 +137,7 @@ "state": { "type": "outline", "state": { - "file": "Algo/Séminaire/Chapter 5 - Recursivity.md" + "file": "Algo/Séminaire/Exercices seminaire.md" } } }, @@ -170,8 +170,8 @@ }, "active": "0d2d422aa24bb900", "lastOpenFiles": [ - "Algo/Séminaire/Exercices seminaire.md", "Algo/Séminaire/Chapter 5 - Recursivity.md", + "Algo/Séminaire/Exercices seminaire.md", "Algo/Séminaire/Introduction.md", "Algo/Séminaire/Chapter 3 - Case analysis.md", "Algo/Séminaire/Chapter 2 - Functions.md", diff --git a/Algo/Séminaire/Chapter 5 - Recursivity.md b/Algo/Séminaire/Chapter 5 - Recursivity.md index e30396f..56db4f9 100644 --- a/Algo/Séminaire/Chapter 5 - Recursivity.md +++ b/Algo/Séminaire/Chapter 5 - Recursivity.md @@ -119,6 +119,12 @@ Exemple with egypt (4.10) vs multiply (4.6): The best algorithm in term of complexity is the parameter that is constant/linear or logarithmic. If you have an exponential algorithm, you can put it in trash :) **Exemple with fibonacci algorithm** +```Ocaml +# let rec fibo = function + 0|1 -> 1 + | n -> fibo (n-1) + fibo(n-2);; +``` + | |res|how (for human) ?|How (for function) ?| |:----:|:----:|:----:|:----:| @@ -133,4 +139,14 @@ The best algorithm in term of complexity is the parameter that is constant/linea
-This function is not optimize because the number of calls is growing exponentially \ No newline at end of file +This function is not optimize because the number of calls is growing exponentially. +A good function will be: +```Ocaml +# let fibo n = + let rec fib i fi fi_1 = + if n <= i then + fi + else + fib (i+1)(fi+fi_1)fi + in fib 1 1 1 +``` diff --git a/Algo/Séminaire/Exercices seminaire.md b/Algo/Séminaire/Exercices seminaire.md index 503adf3..97be547 100644 --- a/Algo/Séminaire/Exercices seminaire.md +++ b/Algo/Séminaire/Exercices seminaire.md @@ -1,5 +1,5 @@ -|## Exercise 2.2 (Power) +## Exercise 2.2 (Power) ```Ocaml (*First version ; 6 multiplications*) @@ -366,3 +366,11 @@ let rec multiply x y = eg b;; ``` + +## Exercise 4.11 +```Ocaml +let rec puissance = function + |n when n = 0 -> 1 + |n when n = 1 -> x + |n -> +``` \ No newline at end of file