这个事情要分两种情况讨论,主要区别在尾递归上:

1、Java为代表的面向对象语言,没有尾递归,会出现栈溢出;
2、JavaScript为代表的有函数式特性的语言,有尾递归,会一直运行,不会溢出。

尾递归的文字概念和解释阮一峰的ES6中有写

如果画图理解的话大概就是下面两张图解释的比较清楚。

图片说明
图片说明