Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于java的递归_Java_Recursive Datastructures - Fatal编程技术网

基于java的递归

基于java的递归,java,recursive-datastructures,Java,Recursive Datastructures,在上面的代码中,我必须找到链表的长度。如果我运行相同的代码,我得到的长度是0。但是,当我使用注释代码时,我得到的长度是正确的。为什么会发生这种情况?lengthe.next,count++将count的原始值传递给方法调用,因为您使用的是post increment操作符。因此,您总是通过0 lengthhe.next,++count将起作用,因为这里将传递递增的count值 在已注释的代码中,您没有将count++的值传递给方法调用,而是在count已经递增后传递,这也起作用。length接下

在上面的代码中,我必须找到链表的长度。如果我运行相同的代码,我得到的长度是0。但是,当我使用注释代码时,我得到的长度是正确的。为什么会发生这种情况?

lengthe.next,count++将count的原始值传递给方法调用,因为您使用的是post increment操作符。因此,您总是通过0

lengthhe.next,++count将起作用,因为这里将传递递增的count值

在已注释的代码中,您没有将count++的值传递给方法调用,而是在count已经递增后传递,这也起作用。

length接下来,count++将count的原始值传递给方法调用,因为您使用的是后递增运算符。因此,您总是通过0

lengthhe.next,++count将起作用,因为这里将传递递增的count值

在您的注释代码中,您没有将count++的值传递给方法调用,而是在count已经递增后传递,这也可以使用。

使用

返回长度HE.next,++计数

我将尝试模拟您和我的代码

您的代码:

System.out.println(he.data +"   "+count);
count++;
return length(he.next, count);
我的代码:

//count = 0

length(he.next, count++) // length(he.next, 0) 

//after recursion call count increments , count = 1
伙计们,我是新来的如果我错了,请编辑我:

使用

返回长度HE.next,++计数

我将尝试模拟您和我的代码

您的代码:

System.out.println(he.data +"   "+count);
count++;
return length(he.next, count);
我的代码:

//count = 0

length(he.next, count++) // length(he.next, 0) 

//after recursion call count increments , count = 1

伙计们,我是新来的如果我错了,请编辑我:

count++实际上通过了count,那么删除第二个参数并简单地返回he==null怎么样?0:1+长度。下一个;?谢谢@fabian。。事实上,我通过你找到了另一条路count++实际上传递count,那么删除第二个参数并简单地返回he==null怎么样?0:1+长度。下一个;?谢谢@fabian。。事实上,我通过你找到了另一条路但是,代码是递归的,对于下一个递归步骤。。它必须增加,对吗?就像迭代步骤中发生的那样?为什么递归中没有发生这种情况?@Krishnakrish我不知道你的意思。您正在将未递增的count值传递给每个递归调用。递归结束而不是生成StackOverflowerError的唯一原因是停止条件取决于在每次递归调用中前进的已传递节点,而不是始终为0的已传递计数。@Eran,看起来他希望值在上一个调用堆栈完成后递增,但事实并非如此。作为参数传递给递归方法的变量只是特定递归调用的一部分,但是,代码是递归的,对于下一个递归步骤。。它必须增加,对吗?就像迭代步骤中发生的那样?为什么递归中没有发生这种情况?@Krishnakrish我不知道你的意思。您正在将未递增的count值传递给每个递归调用。递归结束而不是生成StackOverflowerError的唯一原因是停止条件取决于在每次递归调用中前进的已传递节点,而不是始终为0的已传递计数。@Eran,看起来他希望值在上一个调用堆栈完成后递增,但事实并非如此。作为参数传递给递归方法的变量只是特定递归调用的一部分,但是,代码是递归的,对于下一个递归步骤。。它必须增加,对吗?就像迭代步骤中发生的那样?为什么递归中没有发生这种情况?是的,您需要递增。实际上,您正在递增计数,但递增发生在递归调用之后。因为您正在传递旧的count值,即0。但是,代码是递归的,对于下一个递归步骤。。它必须增加,对吗?就像迭代步骤中发生的那样?为什么递归中没有发生这种情况?是的,您需要递增。实际上,您正在递增计数,但递增发生在递归调用之后。因此,您正在传递count的旧值,即0。