Kotlin 递归函数

2024 年 8 月 29 日 | 阅读 3 分钟

递归函数 是一个持续调用自身的函数。这种技术被称为递归。

语法

Kotlin 递归函数示例 1:有限次

让我们看一个打印计数的递归函数示例。

输出

hello 1
hello 2
hello 3
hello 4
hello 5

Kotlin 递归函数示例 2:阶乘数

让我们看一个计算数字阶乘的递归函数示例。

输出

Factorial of 5 = 120

上述阶乘示例的工作流程

Kotlin 尾递归

在我们讨论尾递归之前,让我们尝试创建一个使用普通(一般)递归计算第 n 个(100000 以上的数字)总和的示例。

普通递归

让我们看一个使用普通(一般)递归计算第 n 个(100000 以上的数字)总和的示例。

输出

Exception in thread "main" java.lang.StackOverflowError

上面的例子抛出了一个“java.lang.StackOverflowError”异常。 这是因为编译器无法调用大量递归函数调用。

尾递归

尾递归 是一种首先执行计算,然后进行递归调用的递归。 当前步骤的结果被传递到下一个递归调用中。

尾递归遵循一个实现规则。 此规则如下所示

递归调用必须是该方法的最后一个调用。 要将递归声明为尾递归,我们需要在递归函数之前使用 tailrec 修饰符。

Kotlin 尾递归示例 1:计算第 n 个 (100000) 数字之和

让我们看一个使用尾递归计算第 n 个(100000 以上的数字)总和的示例。

输出

sun of upto 100000 number = 5000050000

Kotlin 尾递归示例 2:计算数字的阶乘

让我们看一个使用尾递归计算数字阶乘的示例。

输出

Factorial of 4 = 24