普通递归在执行时需要保存当前数据,并在内存中重新开辟栈。所以普通递归的空间复杂度比较高,效率比较低。所以,我们一般倾向于把递归方式转化成迭代的方式进行计算。但是如果递归语句是整个函数的最后一个语句,则无需保存当前数据,并重新开辟栈。可以直接在当前的栈中继续读取/写入数据。这种递归方式的效率就比较高。递归语句是整个函数的最后一个语句,这种方式称之为尾递归。我们还是用计算sum = 1 + 2 + 3 + … + n举例:
int add1(int n) //普通递归
{
if (n == 0) //递归出口
return n;
else
<