求教:怎么用栈模拟尾递归
本人有个坏习惯,就是什么递归算法都喜欢用栈模拟、、
比如什么快排啊,dfs啊。。而且一定要用链表模拟的栈,随时动态释放的那种、
然后我想了无数堂课(学生党上课不听课请无视、、、),没想明白怎么用栈模拟尾递归、
出栈顺序好像不太靠谱、、
Sort(A,x,y)
Pretiton(A,x,y)
if x+1>=y
then return
Sort(A,x,x+下取整(y-x-1)/2)
Sort(A,x+下取整(y-x-1)/2+1,y)
Pretiton(A,x,y)
for i←0 to 下取整(y-x-1)/2
if A[x+i]>A[y-i]
then
exchange A[x+i]←->A[y-i]
if x+1>=y
then return
Pretiton(A,x,x+下取整(y-x-1)/2)
Pretiton(A,x+下取整(y-x-1)/2+1,y)
for i←0 to 下取整(y-x-1)/2
if A[x+i]>A[y-i]
then
exchange A[x+i]←->A[y-i]
if x+1>=y
then return
这个怎么改?(我写的是伪代码。大神们用c、c++/c#/java/vb/pascal回复我都看得懂得,麻烦大神们了)