先看递归与栈的关系:
栈 是 先进后出。。递归的话是程序运行到某个点的时候,调用自身,这个时候,之前没运行完的程序会暂时不运行,等到下一层调用完了之后再运行。。这个正是符合栈的先进后出。。这个时候就会有个进栈。。。等到下一层调用完运行了。。之后就可以出栈继续运行。
递归是指函数直接或间接地调用自己。
尾递归是指所有递归形式的调用,一定是发生在函数的末尾。举例来说,这是在 C 语言中用循环来计算 1 ~ 100 的和:
int sum = 0;
for (int i = 1; i <= 100; ++i)