例子
#include<iostream>
int add(int x)
{
if (x == 1) return 1;
return x + add(x - 1);
}
int main()
{
std::cout << ave(10);
system("pause");
return 0;
}
这段代码执行流程为 10+add(9)
add(9)=9+add(8)
add(8)=8+add(7)
....add(2)=2+add)(1)
总结:add(10)=10+9+8+7+...+1
循环和递归函数相比:循环效率更高,因为循环不用函数,不用入栈,不用平衡堆栈,但是递归可阅读性更强
特别注意*:递归函数一定要有退出的机制,即本例中的return 1。不然会导致程序崩溃,因为函数的每次调用都会用到push,会不停的开辟栈空间,会导致栈被撑爆
特别注意*:内联函数不能用递归
相互递归
现在有A,B两个函数,A调用B,B调用,这样就称为相互递归。
代码实战
这里留个坑,本来是想把游戏排行榜写成递归函数,但是不会改,以后来填,