学习笔记——递归

发现我已经好久没写笔记了……我就是逊啦……

我认为递归是算法中较有难度的一种

笼统地说,递归是将最终极简化为下一极和【一极】,【一极】是下一极通过到达最终极的某种条件。

这么说也许晦涩难懂,可以举个例子:

譬如走楼梯,你站在【第一个台阶】如果要上到【第三个台阶】,那么你可以从【第三阶】开始推算,【第三阶】是【第二阶】上一个台阶,【第二阶】是【第一街】上一个台阶。

所以,你要上到【第三阶】,需要走两级台阶。

转化成代码来理解:

很经典的问题,计算阶乘,就是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);
}

因此,递归可以被看做由结束条件和返回值组成。

因为递归本身比较抽象,所以理解起来还是有一定难度的

posted @ 2022-04-06 10:17  美索maysoul  阅读(50)  评论(0)    收藏  举报