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

递归让我们把问题由大分小,小到我们能够轻松处理。递归方法有两个要注意的点: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. 要有终止条件

                                                                               

posted @   Eagle6970  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示