算法网课笔记(六)——递归

给定一个用户ID,如何查找其“最终推荐人”

递归

典型递推公式:f(n)=f(n-1)+1,f(1)=1
递归代码

int f(int n){
   
	if (n==1)  return 1;
	return f(n-1)+1;
	}

递归的三个条件

1.一个问题的解可以分解为几个子问题
2.子问题与原问题,除了数据规模,求解思路完全一样
3.存在递归终止条件

如何写递归代码

关键:(1)递推公式,(2)终止条件

以走楼梯为例,n阶楼梯,可以一步一阶或者一步2阶,有多少种走法?
递推公式:f(n)=f(n-1)+f(n-2),表示第一步走一阶的走法数+第一步走2阶的走法数
终止条件:f(1)=1,此外用f(2)验证,发现f(0)的值也需要给出,f(0)=1,但是不符合逻辑,所以应该是f(2)=2。
递归代码:

int f(int n){
   
	if (n==1) return 1;
	if (n==2) return 2;
	return f(n-1)+f(n-2);
	}

关键遇到需要递归的部分,将其抽象成一个递归公式,不要考虑公式内部的层层关系,也就是先“假设子问题已经存在解决方法”,再来写当前问题的解法代码

PS:通过限制递归调用的最大深度,避免堆栈溢出

防止递归中的重复计算

在走楼梯问题中,存在大量的重复计算、

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
大数据在不论在研究还是工程领域都是热点之一,算法是大数据管理与计算的核心主题。本课程试图简要介绍大数据计算中涉及到的基本算法设计方法。适用于大数据研究与开发人员,也适用于数据科学爱好者。 大数据算法这门课程旨在通过讲授一些大数据上基本算法设计思想,包括概率算法、I/O有效算法和并行算法,让听课的同学们接触到和传统算法课程不一样的算法设计与分析思路,并且以最新的研究成果为导向,让参与这门课程学习的同学了解大数据算法的前沿知识。通过这门课程的学习,同学可以掌握大数据算法设计的基本思想,掌握大数据算法设计与分析的技术。 【课程目录】 第1章 大数据算法概述 大数据的定义与特点 大数据算法 大数据算法设计与分析 第2章 亚线性算法概述 亚线性算法的定义 水库抽样—空间亚线性算法 平面图直径—时间亚线性计算算法 全0数组判定—时间亚线性判定算法 第3章 亚线性算法例析 数据流中频繁元素 最小生成树 序列有序的判定 第4章 外存算法概述 外存存储结构与外存算法 外存算法示例:外存排序算法 外存数据结构示例:外存查找树 第5章 外存查找结构 B树 KD树 第6章 外存图数据算法 表排序及其应用 时间前向处理方法 缩图法 第7章 基于MapReduce的并行算法设计 MapReduce概述 字数统计 平均数计算 单词共现矩阵的计算 第8章 MapReduce算法例析 连接(Join)算法算法 第9章 非MapReduce的并行算法设计 基于迭代处理平台的并行算法 基于图处理平台的并行算法 第10章 众包算法 众包的定义 众包的实例 众包的要素 众包算法例析

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值