代码1:
public static int fibonacci (int n){
if (n == 0 || n == 1) {
return 1;
} else {
return fibonacci (n-1) + fibonacci (n-2);
}
}
fibonacci
如果还没有完成解释,该如何使用?我已经可以理解在其他情况下使用递归:
代码2:
class two
{
public static void two (int n)
{
if (n>0)
{
System.out.println (n) ;
two (n-1) ;
}
else
{
return ;
}
}
public static void main (String[] arg)
{
two (12) ;
}
}
但是,在代码2的情况下,n
最终将达到它无法满足的程度,n>0
并且该方法将停止递归调用自身。但是,在代码2的情况下,如果n=1
作为起点到2、3和5,依此类推,我看不到如何从1获得自身。另外,我看不到该行的return fibonacci (n-1) + fibonacci (n-2)
工作方式,因为fibonacci (n-2)
在某种意义上必须包含该行fibonacci (n-1)
才能工作,但目前为止还不行。
我正在看的书说它会起作用。它是如何工作的?
好吧,撇开编译器实际上对您的代码所做的事情(这是可怕的,又很漂亮)以及CPU实际上如何解释您的代码(同样),这是一个相当简单的解决方案。
考虑以下文本说明:
要对编号的块进行排序:
当您到达说明4和5时,系统将要求您重新开始整个过程。但是,这不是问题,因为您仍然知道如何开始该过程,并且当所有这些最终解决时,您就会得到一堆排序的块。您可以用纸条覆盖这些说明,它们将变得更容易遵循。
问题内容: 请以最简单的方式说明递归的工作方式。 问题答案: 这是一个递归方法的简单示例:-
我一直在网上看递归(C语言)的例子,试图更好地理解它和它是如何工作的。一般来说,我可以毫无问题地跟踪一些基本的递归问题(比如阶乘问题),但是我发现了这个问题,并且完全不知道如何跟踪它。 这个想法是让用户输入一个变化量,通过使用递归,您打印出可以进行变化量的方式数量。代码如下: 显然,这是递归的常见应用。不过,我无法理解这种递归是如何工作的。对我来说最突出的是,同一条线路上有2个递归调用。我从未见过
我找到了下面的函数,它递归地反转链表: 我理解了涵盖基本情况的语句。 递归是如何反转列表的?有没有更简单的递归版本可以反向链表?作为参考,我正在解决LeetCode问题206。反向链表: 给定单链表的,反向该列表,并返回反向列表。
我几乎理解了尾递归是如何工作的,以及它与普通递归之间的区别。我只是不明白为什么它不要求堆栈记住它的返回地址。 在尾递归函数中调用函数本身后没有什么可做的,但对我来说这没有意义。
此函数生成数组的排列。我已经把笔放在纸上,在开发工具中放置断点,并煞费苦心地逐步完成每个函数调用,但我仍然不明白这是如何工作的。 具体来说,就是 for 循环。一旦 do It 函数拼接了数组中的所有数字,它将临时数组的切片副本推送到答案数组中。然后,它将项拼接到参数数组中,从临时数组中弹出相同的项,并返回 for 循环第一次迭代的答案。因此,在遍历数组一次后,答案 = [1,2,3] 温度 =
我现在正在做一项作业,我已经在网上找到了解决问题的方法(看起来简单得离谱,但就像魔术一样) 我仍然很难理解递归到底是如何工作的,我真的很想学。 有人能帮我理解这个逻辑吗? 问题是找到从根节点到叶节点的最长路径。(基本上找到树的高度?)。 函数如下: 这是我的treeNode类定义: