[数据结构学习笔记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 @ 2025-01-15 13:39  Eagle6970  阅读(19)  评论(0)    收藏  举报