跳至主要內容

递归算法

刘春龙原创...大约 2 分钟算法递归

递归简介💎

什么是递归呢?

一个函数在内部调用了其本身,那个这个函数就是递归函数,递归本质上是将原来的问题,转化为更小的同一问题,大白话就是:一个函数不断的调用自己,粗暴的理解:函数内部自己调用自己,这个函数就是递归函数。

举例说明

从前有座山,山里有个庙,庙里有个老和尚在给小和尚讲故事,讲的是从前有座山,山里有个庙,庙里有个老和尚在给小和尚讲故事,讲的是从前有座山……

这就是一个典型的递归,在不考虑岁数等自身的条件下,这将是个死递归,没有终止条件。

递归三要素如下:

  • 一个问题的解可以分解为几个更小的同一题的解
  • 分解后的子问题只存在数据不一样的问题。
  • 存在递归终止条件

递归其主要思想在于:

  • 将问题分为规模更小的相同问题,持续分解,直到问题规模小到可以用非常简单直接的方式来解决
  • 分解完后,再合并结果

因此,递归的编写首先可以定义一个函数,其次找到出口条件的同时还要找到规律。

使用递归容易产生栈溢出的错误

  • 递归一定要有出口,否则就是"死循环"的递归
  • 递归的次数不能太多

递归案例 💎

案例:实现5的阶乘

// 5的阶乘:5*4*3*2*1
function sum (num) {
  if (num <= 1) {
    return 1;
   } else {
    return (num * sum(num-1));
   }
};

轻松一刻

音乐
音乐

视频教程

至此,本章节的学习就到此结束了,如有疑惑,可对接技术客服open in new window进行相关咨询。

上次编辑于:
贡献者: 刘春龙
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.15.7