Ocaml: снова вызывать рекурсивную функцию - PullRequest
2 голосов
/ 05 апреля 2011

Итак, у меня есть рекурсивная функция, которая принимает 2 дюйма, и out_channel и в основном выводит строку (a, a + 1). Это следует делать до тех пор, пока значение a не станет равным b. Т.е. если а = 1, б = 5

линия (1,2) линии (2,3) ... линия (4,5)

> let rec print_line (out:out_channel)(a:int)(b:int) : unit =
  if (a < b) then output_string out ("line("^string_of_int(a)^","^string_of_int(a+1)^")\n")
>    ;;

Я хочу сделать его рекурсивным, если он продолжает печатать строку (a, a + 1) до тех пор, пока a не станет меньше b. Как именно я это называю снова?

Любая помощь будет оценена.

1 Ответ

5 голосов
/ 05 апреля 2011

Итак: сначала проверьте, есть ли a >= b, в этом случае вы закончили и можете вернуть (). В противном случае выведите одну строку (так, как вы это сделали) с последующим рекурсивным вызовом вашей функции с увеличением a. Так что в целом:

let rec print_line (out:out_channel)(a:int)(b:int) : unit =
  if a >= b then
    ()
  else (
    output_string out ("line("^string_of_int(a)^","^string_of_int(a+1)^")\n");
    print_line out (a + 1) b
  )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...