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