在递归函数中使用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);
}