递归基础知识

阿洛克:

我看了一下递归,我了解我使用的阶乘其中一个很基本的东西很感兴趣。因为我研究一下好,看到了它的某些影片,但不知何故,这件事情是非常困惑我。我写的杯子了代码的选项,继续前进,但我到学习的事情办好。

从这里是递归的来源:

我有一两件事要问,因为在代码中,我所看到的一件事就是if-else我知道,如果其他条件很好。但在这里的东西都有点复杂。

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

在上面的代码,这里的结果似乎是正确的,但不知何故我觉得就是为什么它没有返回只有1当满足条件,以及如何来它打印正确的结果。有一个单一的渔获物我没能把握。请帮我通过这个来获得。

考虑我作为编码领域的学习者。谢谢

Divanshu:

查看递归函数的树使得它更容易理解的初学者。每一个递归函数分两步进行:

步骤1:树膨胀

步骤2:回到取代

考虑下面的图像。在图像中,红色表示执行步骤1和颜色绿色显示第2步。你不能做第2步,直到第1步终止。这是什么原因,你必须每另有递归函数终止条件; 树会不断扩大你的程序将运行内存不足。

树表示阶乘4的计算

当你调用fact(4),它扩展为4 * fact(3)进一步扩大如下图所示:

fact(4) = 4 * fact(3)
fact(3) = 3 * fact(2)
fact(2) = 2 * fact(1)
fact(1) = 1

现在,所有你需要做的是为了获得价值回替换值fact(4)

硬件方面,递归函数扩展,就像上面显示的树。这发生在堆栈上,树的每个节点的活动记录。看到这个答案,以了解更多有关活动记录

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章