递归点以上至函数头,相当于队列。
递归点以下至函数尾,相当于栈。
每次递推的过程,就是“以上部分”不断地进队与出队。
和”以下部分“不断地压栈。
当遇到基线条件时,递推终止。
回归的过程,就是把栈中部分,不断出栈。
void f(int n)
{
if (n < 0) return; //base condition
printf("%d ", n); //queue
f(n-1); //recursive point
printf("%d ", 2 * n); //stack
}