Хвостовая рекурсия при ветвлении в ширь
От: varenikAA  
Дата: 13.12.19 04:13
Оценка:
Попалась головоломка:
type Tree<'a> =
  | Leaf of 'a
  | Branch of 'a * Tree<'a> list


let getInfoList a =
  if System.DateTime.UtcNow.Ticks % 10L > 5L 
  then [ a*2L; a*4L; ]
  else []


let rec buildTree a =
    let lst = getInfoList a
    
    if List.isEmpty lst 
    then
      Leaf (a)
    else
      let subTrees = List.map buildTree lst
      Branch (a, subTrees)


let r = buildTree 1L


buildTree возможно ли сделать рекурсих хвостовой? Мне почему-то кажется, что нет, но как это доказать не пойму.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.