递归算法研究报告 #主要内容

递归算法简介

递归,一个在计算机领域里耳熟能详的词。

那递归到底是什么?

递归递归,递而归之。

说人话就是,二叉树。二叉树与递归有着紧密的关联,并且只要理解递归,二叉树也就理解得差不多了。

其实吧,递归就一个很简单的东西,简单来说就是自己里面还有个自己,自己吃自己((+_+)?)

递归算法

下面是一段递归的代码,C++的。

int dfs(int n) {
    // 终止条件
    if (n == 1 or n == 2) {
        return 1;
    }
    // 递归内容
    return dfs(n - 1) + dfs(n - 2);
}

int main() {
    int n;
    scanf("%d", &n);
    printf("%d", dfs(n));
}

 都知道斐波那契数列吧,上面这段代码就模拟了斐波那契数列的计算。

n 代表计算斐波那契数列的第几项。

而最重要的部分就是我们的递归函数了。

递归,有两个重要部分——终止条件和运行部分。

运行部分,很好理解,就是你要运行的部分。

终止条件——啊也很好理解,你总不能像个俄罗斯套娃似的,自己里面套自己,自己里面的自己还套自己……无限循环下去吧。

递归还有一个循环的衍生版,叫递推,下面是用递推做的斐波那契数列:

int a[10010] = {0 ,1, 1};

int main() {
    int n;
    scanf("%d", &n);
    for (int i = 3; i <= n; i++) {
        a[i] = a[i - 1] + a[i - 2];
    }
    printf("%d", a[n]);
}

这种,会更快,因为它不用再重复计算前两项是多少,也就是说,刚刚那个递归是重复计算了很多不必要的数字的,而这个递推是直接把前两项保存下来,直接拿出来用。光看这段文字都觉得递推好很多是不是?

当然,递归也有优化版本,这里就不写出来了。

那二叉树,是什么呢?就像这样:

这就是一个典型的二叉树。

你看,这不就是分裂麻。

那这玩意很递归有什么关系捏?

你看啊,自己里面套自己,然后到最后一层一层的往前面走。

这不就是递归吗?

这里也不多讲,你可以去百度找一下下相关的文献。

尾声/作者的话

那这递归啊,就讲到这。

我也不是一个很厉害的程序员,每天就是在洛谷刷刷题,打打暴力(悲

行吧,那我走了,你自己再慢慢研究一下吧。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值