vault backup: 2023-09-14 21:33:26

This commit is contained in:
Louis Gallet 2023-09-14 21:33:26 +02:00
parent db3377799d
commit 907869bee6
Signed by: lgallet
SSH Key Fingerprint: SHA256:qnW7pk4EoMRR0UftZLZQKSMUImbEFsiruLC7jbCHJAY
2 changed files with 46 additions and 9 deletions

View File

@ -13,7 +13,7 @@
"state": { "state": {
"type": "markdown", "type": "markdown",
"state": { "state": {
"file": "Algo/Séminaire/Chapter 5 - Recursivity.md", "file": "Algo/Séminaire/Exercices seminaire.md",
"mode": "source", "mode": "source",
"source": false "source": false
} }
@ -85,7 +85,7 @@
"state": { "state": {
"type": "backlink", "type": "backlink",
"state": { "state": {
"file": "Algo/Séminaire/Chapter 5 - Recursivity.md", "file": "Algo/Séminaire/Exercices seminaire.md",
"collapseAll": false, "collapseAll": false,
"extraContext": false, "extraContext": false,
"sortOrder": "alphabetical", "sortOrder": "alphabetical",
@ -102,7 +102,7 @@
"state": { "state": {
"type": "outgoing-link", "type": "outgoing-link",
"state": { "state": {
"file": "Algo/Séminaire/Chapter 5 - Recursivity.md", "file": "Algo/Séminaire/Exercices seminaire.md",
"linksCollapsed": false, "linksCollapsed": false,
"unlinkedCollapsed": true "unlinkedCollapsed": true
} }
@ -125,7 +125,7 @@
"state": { "state": {
"type": "outline", "type": "outline",
"state": { "state": {
"file": "Algo/Séminaire/Chapter 5 - Recursivity.md" "file": "Algo/Séminaire/Exercices seminaire.md"
} }
} }
}, },
@ -158,19 +158,19 @@
}, },
"active": "0d2d422aa24bb900", "active": "0d2d422aa24bb900",
"lastOpenFiles": [ "lastOpenFiles": [
"Algo/Séminaire/Chapter 4 - A bit of imperative.md", "Algo/Séminaire/Introduction.md",
"Algo/Séminaire/Chapter 3 - Case analysis.md",
"Algo/Séminaire/Chapter 2 - Functions.md", "Algo/Séminaire/Chapter 2 - Functions.md",
"Algo/Séminaire/Chapter 1 - CAML basics.md", "Algo/Séminaire/Chapter 3 - Case analysis.md",
"Algo/Séminaire/Exercices seminaire.md",
"Algo/Séminaire/Chapter 5 - Recursivity.md", "Algo/Séminaire/Chapter 5 - Recursivity.md",
"Algo/Séminaire/Chapter 4 - A bit of imperative.md",
"Algo/Séminaire/Chapter 1 - CAML basics.md",
"Algo/Séminaire/assets/exception-meme.png", "Algo/Séminaire/assets/exception-meme.png",
"Algo/Séminaire/assets/filter-meme.png", "Algo/Séminaire/assets/filter-meme.png",
"Algo/Séminaire/assets/if-meme.png", "Algo/Séminaire/assets/if-meme.png",
"Algo/Séminaire/Exercices seminaire.md",
"Algo/Séminaire/assets/basics-meme.png", "Algo/Séminaire/assets/basics-meme.png",
"Algo/Séminaire/assets/functions-meme.jpg", "Algo/Séminaire/assets/functions-meme.jpg",
"Algo/Séminaire/assets/unitaire-meme.png", "Algo/Séminaire/assets/unitaire-meme.png",
"Algo/Séminaire/Introduction.md",
"Algo/Séminaire/assets/fact function response.png", "Algo/Séminaire/assets/fact function response.png",
"Algo/Séminaire/assets/recursivite-meme.png", "Algo/Séminaire/assets/recursivite-meme.png",
"Pasted image 20230912155138.png", "Pasted image 20230912155138.png",

View File

@ -305,3 +305,40 @@ let rec quo a b =
else else
1 + quo (a-b) b ;; 1 + quo (a-b) b ;;
``` ```
## Exercise 4.9
```Ocaml
let rec reverse n =
let str_n = string_of_int n in
let len = String.length str_n in
let rec reverse_helper index =
if index < 0 then
""
else
String.make 1 str_n.[index] ^ reverse_helper (index - 1)
in
reverse_helper (len - 1) ;;
let rec reverse_int n =
let rec reverse_helper acc remaining =
if remaining = 0 then
acc
else
let last_digit = remaining mod 10 in
let new_acc = acc * 10 + last_digit in
let new_remaining = remaining / 10
in reverse_helper new_acc new_remaining in reverse_helper 0 n ;;
```
## Exercise 4.10
```Ocaml
let rec multiply x y =
if x = 0 || y = 0 then
0
else if x mod 2 = 0 then
multiply (x / 2) (y * 2)
else
y + multiply (x / 2) (y * 2)
```