首页 > 其他分享 >[数据结构学习笔记13] 递归简介(Recursion)

[数据结构学习笔记13] 递归简介(Recursion)

时间:2025-01-15 13:44:09浏览次数:1  
标签:function 13 调用 return 递归 Recursion 终止 数据结构 hello

递归让我们把问题由大分小,小到我们能够轻松处理。递归方法有两个要注意的点:1. 递归方法会重复的被调用;2. 必须有一个终止条件,否则方法调用不停,会导致stack overflow。

看下面的一个例子,这个没有终止条件,会报错!

function hello() {
  console.log("I'm a little function, short and stout!");  
  hello();
} // Uncaught RangeError: Maximum call stack size exceeded

注意这里hello()里面调用了hello(),这就是递归,自己调用自己,但是这里它没有终止条件,所以会无限调用,会报错误!

 

 添加终止条件

function hello(num) {
   if (num <= 1) {
      return num; // termimating condition
   } else {
       // recursive function call
       return num + hello(num - 1);
   }
} 

我们来调用一下这个方法,比如hello(3):

hello(3) -> return 3 + hello(2) -> return 3 + 2 + hello(1) 

                                                                               ↓

  return 6;    ←        return 3 + 3;    ←         return 3 + 2 + 1;

 

再强调一下递归要注意的两点:

1. 自己调用自己

2. 要有终止条件

                                                                               

标签:function,13,调用,return,递归,Recursion,终止,数据结构,hello
From: https://www.cnblogs.com/Eagle6970/p/18672397

相关文章

  • 科普文:算法和数据结构系列【压缩和通信利器:哈夫曼树(Huffman Tree)java示例代码解读】
    概叙科普文:算法和数据结构系列【算法和数据结构概叙】-CSDN博客科普文:算法和数据结构系列【非线性数据结构:树Tree和堆Heap的原理、应用、以及java实现】-CSDN博客科普文:算法和数据结构系列【树:4叉树、N叉树】-CSDN博客科普文:算法和数据结构系列【二叉树总结-上篇:满二叉树、......
  • 【轻松掌握数据结构与算法】字符串算法(String Algorithms)
    字符串算法概述字符串匹配算法是计算机科学中的一个重要领域,主要用于在文本中查找特定模式(子字符串)的出现位置。这些算法在文本编辑器、搜索引擎、生物信息学等领域有广泛的应用。暴力法(BruteForceMethod)暴力法是最直接的字符串匹配算法,它通过逐个字符比较来查找模式在文......
  • 初阶数据结构【队列及其接口的实现】
    目录前言一、队列的概念及结构二、队列的实现方式三、队列的实现3.1基本结构3.2队列基本功能接口初始化队列销毁队列3.3入队列接口3.4出队列接口3.5队列的其它接口获取队列头部元素获取队列队尾元素检测队列是否为空获取队列中有效元素个数3.6测试总结前言......
  • 线性代数13.线性相关性&内积&范数&正交
    13.线性相关性&内积&范数&正交13.1向量组的线性相关性13.1.1定义对于任意向量组\(A:a_1,a_2,a_3,...,a_n\),存在不全为0的数\(k_i(i=1,2,3,...,m)\),使:\[\tag{1}\sum_{i=1}^mk_i\cdota_i=0\]则称向量组A是\(线性相关\)的,否则称A是\(线性无关\)的13.1.2线性相关示例示例......
  • 数据结构——链表(概念,类型,java实现、增删、优缺点)
    文章目录链表链表介绍链表类型1.单向链表2.双向链表3.循环链表链表实现(增删改查)链表节点插入节点删除节点链表的特点与优势......
  • 逐笔成交逐笔委托Level2高频数据下载和分析:20250113
    level2逐笔成交逐笔委托下载链接:https://pan.baidu.com/s/1MznaXomAMSfljBMwAF9CDA?pwd=2rkf提取码:2rkfLevel2逐笔成交逐笔委托数据分享下载 采用Level2逐笔成交与逐笔委托的详细记录,这种毫秒级别的数据能揭露众多关键信息,如庄家意图、虚假交易,使所有交易行为透明......
  • Level2逐笔成交逐笔委托毫秒记录:今日分享优质股票数据20250113
    level2逐笔成交逐笔委托下载链接:https://pan.baidu.com/s/1MznaXomAMSfljBMwAF9CDA?pwd=2rkf提取码:2rkfLevel2逐笔成交逐笔委托数据分享下载 采用Level2逐笔成交与逐笔委托的详细记录,这种毫秒级别的数据能揭露众多关键信息,如庄家意图、虚假交易,使所有交易行为透明......
  • Xbox:Xbox游戏测试与质量保证技术教程_2024-07-19_21-13-40.Tex
    Xbox:Xbox游戏测试与质量保证技术教程游戏测试基础游戏测试的重要性游戏测试是游戏开发过程中不可或缺的一环,它确保游戏在发布前能够提供给玩家一个流畅、无bug、且具有高度娱乐性的体验。测试的重要性在于:确保游戏质量:通过测试,可以发现并修复游戏中的各种问题,如图形错误......
  • 数据结构-链表 day 2
    数据结构-链表单链表一般在算法里面都是采用的静态链表,动态链表单链表一般就是邻接表,包括存储树与图双链表一般是优化某些问题的一下是动态链表与静态链表之间的区别.内存分配方式•静态链表:•静态链表通常是基于一个固定大小的数组来实现的。链表中的每个结点在数......
  • 题解:AT_abc136_f [ABC136F] Enclosed Points
    传送门Solution对于一个点\(i\),我们将其与其它点匹配,故有\(2^{n-1}\)的方案数,这是答案的初始。对于每个点\((x_i,y_i)\)再建系,四个象限都可能会有点,我们此时考虑四个象限的点如何匹配,才能使\((x_i,y_i)\)包含其中,稍微手玩一下就可以发现,对于一四象限、二三象限的点匹......