java main递归_Java 递归

Java 递归

在本教程中,您将了解Java递归函数及其优缺点。

在Java中,调用自身的方法称为递归方法。并且,此过程称为递归。

一个物理世界的实例是放置两个彼此面对的平行反射镜。它们之间的任何对象都将被递归地反射。

递归如何工作?java-recursive-call.jpgJava递归的工作流程图

在上面的示例中,我们从main方法内部调用了recurse()方法。  (正常方法调用)。 并且,在recurse()方法内部,我们再次调用相同的recurse方法。 这是一个递归调用。

为了停止递归调用,我们需要在方法内部提供一些条件。否则,该方法将被无限调用。

因此,我们使用if ... else语句(或类似方法)终止方法内部的递归调用。

示例:使用递归的阶乘class Factorial {

static int factorial( int n ) {

if (n != 0)  // 终止条件

return n * factorial(n-1); //递归调用

else

return 1;

}

public static void main(String[] args) {

int number = 4, result;

result = factorial(number);

System.out.println(number + " 的阶乘= " + result);

}

}

输出:4 的阶乘= 24

在上面的示例中,我们有一个名为factorial()的方法。 从main()方法调用factorial()。 用传递的数字变量作为参数。

在这里,请注意以下语句:

return n * factorial(n-1);

factorial()方法正在调用自身。 最初,n的值在factorial()内部为4。 在下一个递归调用期间,将3传递给factorial()方法。 此过程一直持续到n等于0。

当n等于0时,if语句返回false,因此返回1。最后,将累积的结果传递给main()方法。

阶乘程序的工作流程

下图将使您更好地了解如何使用递归执行阶乘程序。how-recursion-works-java.jpg使用递归的阶乘程序

递归的优缺点

进行递归调用时,将在堆栈上分配新的变量存储位置。随着每个递归调用的返回,旧的变量和参数将从堆栈中删除。因此,递归通常使用更多的内存,并且通常很慢。

另一方面,递归解决方案要简单得多,并且花费更少的时间来编写,调试和维护。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值