代码:
let qrec=Queue.create ()
let q=Queue.create ()
let queueaddforto=for i=1 to 5 do
Queue.add i q
done
let rec queueaddrec n=if n>0 then Queue.add n qrec else queueaddrec (n-1)
let ()=
queueaddrec 5;
Queue.iter print_int qrec;
queueaddforto;
Queue.iter print_int q
结果:
512345
似乎无法在rec函数中持续添加项目到队列中,我不知道为什么。是否有某种方法可以在rec函数中持续添加队列中的项目?
谢谢!
的
queueaddrec
分支中没有对
n>0
的递归调用
let rec queueaddrec n=if n>0 then Queue.add n qrec else queueaddrec (n-1)
因此,当使用
n>0
调用时,queueaddrec n
会在队列中添加一个元素。
另请注意,该行
queueaddforto;
什么也不做:已经添加到
q
末尾的元素
queueaddforto
的定义
let queueaddforto=for i=1 to 5 do
Queue.add i q
done
换句话说,
queueaddforto
= ()
,这是一个常数值。