java变量作用域的问题。

import java.util.Scanner;

public class grammar {

    public static void main(String[] args) {
        //Scanner scan= new Scanner(System.in);
        
        //nt r = scan.nextInt();
        
        int s = getNum(100);
        System.out.println(s);
    }
    
    public static int getNum(int m){
        if(m==1){
            return 1;
        }else{
            int sum = m + getNum(m-1);
        }
        return sum;
    }
}

递归函数里 我把sum 定义在前面就没问题,向上面这样定义却报错了,想不明白,求教。

阅读 2.7k
3 个回答

int sum 这个定义走出else块就没有了。

新手上路,请多包涵

全局变量和局部变量

新手上路,请多包涵

程序块是一个使用'{'和'}'包含起来的单独的模块,
局部变量指的是只在相应的方法体内或程序块内才有效的变量。
由题可见,sum是else{}中的局部变量,故而在else{}之外无法访问它;

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题