Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.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_Function_Recursion_Variable Assignment - Fatal编程技术网

在递归函数中使用Java减量运算符

在递归函数中使用Java减量运算符,java,function,recursion,variable-assignment,Java,Function,Recursion,Variable Assignment,这是一个递归函数- private void printVar01(int t){ if(t != 0){ logp.info("o: "+t); printVar01(t-1); } } 相同的功能,稍作修改- private void printVar02(int t){ if(t != 0){ logp.info("o: "+t); printVar02(t--); } } 如果我传入一个像

这是一个递归函数-

private void printVar01(int t){
    if(t != 0){
        logp.info("o: "+t);
        printVar01(t-1);
    }
}
相同的功能,稍作修改-

private void printVar02(int t){
    if(t != 0){
        logp.info("o: "+t);
        printVar02(t--);
    }
}
如果我传入一个像4这样的整数值,printVar01将按预期工作,其中t在连续的重现调用中递减为0,最终导致程序退出

对于printVar02,t保持在值4


为什么??我假设这与变量赋值和/或如何将值传递给函数有关

t-1
不会改变
t
,而
t--
会改变

  • t-1
    在不影响
    t
  • t--
    为您提供
    t
    ,然后减少
    t
我认为
printVar02
应该可以正常工作,并且在
printVar01
中的值保持不变


征求


实际上01将不起作用02,在01中t正在变化,但在02中 函数在更改T的值之前调用自身,他只是 需要使用--t

我也肯定怀疑递归调用

如果您的意思是
printVar
=
printVar01
=
printVar02

如果您递归调用
printVar
,则
t-1
将起作用,因为递归调用将使其起作用,并且在
t--
中,它将在每次作为后减量时传递相同的值
4
,请使用predecrement
--t

只要使用--t代替t即可--


执行语句
printVar(t--)
后,后减量将值定为1。因此,每次4被传递到函数时。
Use应该使用--t来代替,它首先执行减量。

是的,我应该读两遍该文档:)。而且这个-实际上01将不起作用,在01中t正在改变,但是在02中函数在改变t的值之前正在调用自己,他只需要使用--t;是的,如果方法名是
printVar
而不是
printVar02
,这是正确的。这就是他的意思,当他说“这是一个递归函数”时,我明白了,我确信他只是在测试它,这就是为什么他使用01和02
private static void printVar02(int t){
if(t != 0){
    logp.info("o: "+t);
    printVar02(--t);
}