首页 > 解决方案 > 递归基础

问题描述

我已经阅读了有关递归的内容,并且对理解我在阶乘中使用的一个非常基本的东西非常感兴趣。因为我已经很好地研究了它,看到了它的特定视频,但不知何故,这件事让我非常困惑。我可以选择编写代码并继续前进,但我正在学习好东西。

从这里是递归的来源:

我有一件事要问,因为在代码中我看到了一件事就是if-else. 我非常了解 if else 的情况。但是在这里,事情有点复杂。

public static int fact(int n){
  if(n <=1)
     return 1;
  else 
     return n * fact(n-1);
}

在上面的代码中,这里的结果似乎是正确的,但不知何故,我认为为什么它在满足条件时不只返回 1,以及它是如何打印正确的结果的。有一个我无法抓住的问题。请帮助我度过难关。

将我视为编码领域的学习者。谢谢

标签: javaif-statementrecursion

解决方案


简单的试运行将引导您找到答案。N 每次都减一,直到达到 1。

例如,让我们将 N 视为 4

它将进入 else 语句,这将成为return 4 * fact(4-1)

递归现在有4 * fact(3)

事实 3 会导致3 * fact (2)

这将使第一个方程等于4 * 3 * fact(2);

它发生直到 N 变为 1 所以整个方程就像4 * 3 * 2 * 1

在 1 处,递归停止,我们开始通过递归堆栈返回。

希望它能澄清你的问题。


推荐阅读