学习笔记——递归
发现我已经好久没写笔记了……我就是逊啦……
我认为递归是算法中较有难度的一种
笼统地说,递归是将最终极简化为下一极和【一极】,【一极】是下一极通过到达最终极的某种条件。
这么说也许晦涩难懂,可以举个例子:
譬如走楼梯,你站在【第一个台阶】如果要上到【第三个台阶】,那么你可以从【第三阶】开始推算,【第三阶】是【第二阶】上一个台阶,【第二阶】是【第一街】上一个台阶。
所以,你要上到【第三阶】,需要走两级台阶。
转化成代码来理解:
很经典的问题,计算阶乘,就是n!(1*2*3*……*n)
运用递归的思想:n!=n*(n-1)!
那n-1的阶乘就是:(n-1)!=(n-1)*(n-2)!
以此类推
已知1的阶乘为1
所以利用以上的递归式,反复递归至1即可
int f(int x)
{
if(x==1) return 1;
return x*f(x-1);
}
因此,递归可以被看做由结束条件和返回值组成。
因为递归本身比较抽象,所以理解起来还是有一定难度的

浙公网安备 33010602011771号