This site is updated infrequently. For up-to-date information, please visit the new OCaml website at ocaml.org.

[Caml-list] Great Beginner
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
 Date: 2001-11-11 (11:33) From: Remi VANICAT Subject: Re: [Caml-list] Great Beginner
```Franck <franck.collineau@francetelecom.com> writes:

> Hi!
>
> I want to calculate the sum of the n first numbers.
> I've written this code:
> let x =0;;
> let somme n =
>         for i=1 to n
>                 do
>                   x=x+i
>                 done;;
>
> It doesn't work.
> Why ?

Because ocaml is a functional language, so imperative action (as x = x
+ i) doesn't work.

A mean to do this is :
let x = ref 0;;
let somme n =
for i = 1 to n do
x := !x + i
done;;

but the good way to do it is more :
let rec somme n =
if n = 0 then 0
else n + (somme (n - 1))

let x = somme 10

or even better (with a tail recursive function) :

let somme n =
let rec aux i x =
if i <= n then
aux (i+1) (x + i)
else x in
aux 1 0

--
Rémi Vanicat
vanicat@labri.u-bordeaux.fr
http://dept-info.labri.u-bordeaux.fr/~vanicat
-------------------
Bug reports: http://caml.inria.fr/bin/caml-bugs  FAQ: http://caml.inria.fr/FAQ/
To unsubscribe, mail caml-list-request@inria.fr  Archives: http://caml.inria.fr

```