vault backup: 2023-09-12 16:13:32
This commit is contained in:
@ -72,6 +72,12 @@ Error: should have int type (*because of the hidden else*)
|
||||
|
||||
# let print_even n =
|
||||
if n mod 2 = 0 then
|
||||
print_int n ;
|
||||
print_newline()
|
||||
|
||||
begin
|
||||
print_int n ;
|
||||
print_newline()
|
||||
end;; (*begin and end used to execute more than 1 function into a if*)
|
||||
val print_even : int -> unit = <fun>
|
||||
|
||||
# print_even 4;;
|
||||
4
|
||||
-: unit = ()
|
||||
|
44
Algo/Séminaire/Chapter 5 - Recursivity.md
Normal file
44
Algo/Séminaire/Chapter 5 - Recursivity.md
Normal file
@ -0,0 +1,44 @@
|
||||
![[recursivite-meme.png]]
|
||||
### 5.1. Simple functions
|
||||
To create a recursive function we have to use this structure
|
||||
|
||||
```Ocaml
|
||||
(*normal function*)
|
||||
# let f = expr -> 1) evaluate expr ; 2) create & link f to the result
|
||||
|
||||
(*recursiv function*)
|
||||
# let rec f = expr -> 1) create f ; 2) evaluate expr ; 3) link f to the result
|
||||
```
|
||||
|
||||
**Exmple with factorial function**
|
||||
```Ocaml
|
||||
# let rec fact = function
|
||||
| 0 -> 1
|
||||
| n -> n * fact(n-1)
|
||||
|
||||
# fact 4;;
|
||||
-: int = 24
|
||||
```
|
||||
![[fact function response.png]]
|
||||
> ⚠️ CAML have a call stack limite (it will block with stack overflow if the limit is reach)
|
||||
|
||||
**Basic expression**
|
||||
```Ocaml
|
||||
let rec f params =
|
||||
if stop condition then
|
||||
stop expression
|
||||
else
|
||||
recursive expression
|
||||
```
|
||||
|
||||
To write a recurvise function we need two things
|
||||
1) There always is a stop case
|
||||
2) The parameters of a recursive call are different then its parent call, and go towards the stop condition
|
||||
|
||||
### 5.2. Down
|
||||
```Ocaml
|
||||
# let rec countdown n =
|
||||
if n = 0 then
|
||||
print_int(0)
|
||||
else
|
||||
print_int(countdown (n-1));;
|
BIN
Algo/Séminaire/assets/fact function response.png
Normal file
BIN
Algo/Séminaire/assets/fact function response.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 84 KiB |
BIN
Algo/Séminaire/assets/recursivite-meme.png
Normal file
BIN
Algo/Séminaire/assets/recursivite-meme.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 867 KiB |
Reference in New Issue
Block a user