Skip to content

Commit 6d0a400

Browse files
committed
chapter 3: exercices 3.1, 3.2 and 3.3
1 parent 58f5d3d commit 6d0a400

File tree

1 file changed

+66
-0
lines changed

1 file changed

+66
-0
lines changed

chap3/exercices.erl

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
-module (exercices).
2+
-export ([sum_one/1, test_sum_one/0,
3+
sum_two/2, test_sum_two/0,
4+
create/1, test_create/0,
5+
reverse_create/1, test_reverse_create/0,
6+
print_integers/1, print_even_integers/1]).
7+
8+
sum_one(0) -> 0;
9+
sum_one(I) when I > 0 ->
10+
I + sum_one(I-1).
11+
12+
sum_two(N, M) when N > M ->
13+
exit(non_normal_return);
14+
sum_two(N, N) -> N;
15+
sum_two(N, M) ->
16+
N + sum_two(N+1, M).
17+
18+
create(N) ->
19+
create_acc(N-1, [N]).
20+
create_acc(1, List) ->
21+
List;
22+
create_acc(N, List) ->
23+
create_acc(N-1, [N | List]).
24+
25+
reverse_create(N) ->
26+
reverse_create_acc(N).
27+
reverse_create_acc(1) ->
28+
[1];
29+
reverse_create_acc(N) ->
30+
[N | reverse_create_acc(N-1)].
31+
32+
print_integers(1) ->
33+
io:format("Number:~p~n", [1]);
34+
print_integers(N) ->
35+
print_integers(N-1),
36+
io:format("Number:~p~n", [N]).
37+
38+
print_even_integers(1) ->
39+
return;
40+
print_even_integers(N) when N rem 2 == 0 ->
41+
print_even_integers(N-1),
42+
io:format("Number:~p~n", [N]);
43+
print_even_integers(N) ->
44+
print_even_integers(N-1).
45+
46+
test_sum_one() ->
47+
X = sum_one(5),
48+
X = 15,
49+
success.
50+
51+
test_sum_two() ->
52+
X = sum_two(1,3),
53+
Y = sum_two(6,6),
54+
X = 6,
55+
Y = 6,
56+
success.
57+
58+
test_create() ->
59+
X = create(3),
60+
X = [1,2,3],
61+
success.
62+
63+
test_reverse_create() ->
64+
X = reverse_create(3),
65+
X = [3,2,1],
66+
success.

0 commit comments

Comments
 (0)