全局变量在递归函数中如何工作? 我在下面有一个代码。为什么这会输出 7 个 0?
int giValue=6;
public static void main(String[] args) {
// TODO Auto-generated method stub
Demo obj1=new Demo();
obj1.fnReverse();
}
public void fnReverse(){
if(giValue>0){
giValue--;
fnReverse();
}
System.out.println(" "+giValue);
}
我想知道全局变量值保存在哪里,值是如何变化的? 谢谢
最佳答案
它会打印 7 个零,因为在每次递归调用结束时,您都会打印 giValue
的值。由于该方法在 giValue
达到 0 之前永远不会到达打印语句,因此当递归展开时它只打印 0。
值因 giValue--;
行而改变。 giValue
不是全局变量。它是您的 Demo
类的一个实例变量,当您创建 Demo
实例时,它的值被初始化为 6。
该方法有 7 次调用 - 初始调用和 6 次额外的递归调用。前 6 次调用递减 giValue
,因此在第 7 次调用期间其值为 0,递归结束。
关于java - 在java中使用全局变量递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31000830/