如何将ES6函数尾递归用法实例改写成长尾递归的?

2026-04-03 09:430阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计572个文字,预计阅读时间需要3分钟。

如何将ES6函数尾递归用法实例改写成长尾递归的?

原文:本文字例讲述了ES6函数之尾递归用法。分享给大众提供参考,具体如下:

如何将ES6函数尾递归用法实例改写成长尾递归的?

函数调用自身,称为递归,若尾调用自身,则称为尾递归。

尾递归非常耗内存。因为需要同时保存成千上万的调用状态。

本文实例讲述了es6函数之尾递归用法。分享给大家供大家参考,具体如下:

函数调用自身,称为递归,如果尾调用自身,就称为尾递归。

递归非常耗费内存。因为需要同时保存成千上百个调用帧,很容易发生“栈溢出”错误(stack overflow)。但是对于尾递归来说,由于只存在一个调用帧,所以永远不会发生“栈溢出”错误。

function factorial(n) { if (n === 1) return 1 return n * factorial(n - 1) }

如果改成尾递归,只保留一个调用记录,复杂度O(1)

function factorial(n, total = 1) { if (n === 1) return total return factorial(n - 1, n * total) } factorial(5)

非尾递归的 Fibonacci 数列实现如下。

阅读全文

本文共计572个文字,预计阅读时间需要3分钟。

如何将ES6函数尾递归用法实例改写成长尾递归的?

原文:本文字例讲述了ES6函数之尾递归用法。分享给大众提供参考,具体如下:

如何将ES6函数尾递归用法实例改写成长尾递归的?

函数调用自身,称为递归,若尾调用自身,则称为尾递归。

尾递归非常耗内存。因为需要同时保存成千上万的调用状态。

本文实例讲述了es6函数之尾递归用法。分享给大家供大家参考,具体如下:

函数调用自身,称为递归,如果尾调用自身,就称为尾递归。

递归非常耗费内存。因为需要同时保存成千上百个调用帧,很容易发生“栈溢出”错误(stack overflow)。但是对于尾递归来说,由于只存在一个调用帧,所以永远不会发生“栈溢出”错误。

function factorial(n) { if (n === 1) return 1 return n * factorial(n - 1) }

如果改成尾递归,只保留一个调用记录,复杂度O(1)

function factorial(n, total = 1) { if (n === 1) return total return factorial(n - 1, n * total) } factorial(5)

非尾递归的 Fibonacci 数列实现如下。

阅读全文