我收到了这个编译问题,我无法弄清楚原因.有人可以帮忙吗?
public static void main(String[] args) { Scanner scan = new Scanner(System.in); int n = scan.getInt() ; System.out.println(factorial(n)) ; int factorial(int a){ if (a==0) return 1; else return (a*factorial(a-1)); }}
Post Edit注意:我不知道在main()中不能声明另一个函数.在外面写它,它工作得很好.
您正在尝试创建一个在方法factorial
内部调用的main
方法.它必须紧挨着它,而不是它内部.
可读且一致地格式化代码有助于解决问题:
import java.io.*; import java.util.*; import java.text.*; import java.math.*; import java.util.regex.*; public class Solution { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int n = scan.getInt(); System.out.println(factorial(n)); int factorial(int a) { // <=== Problem if (a == 0) return 0; else return (a * factorial(a - 1)); } } }
代替:
import java.io.*; import java.util.*; import java.text.*; import java.math.*; import java.util.regex.*; public class Solution { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int n = scan.getInt(); System.out.println(factorial(n)); } int factorial(int a) { if (a == 0) return 0; else return (a * factorial(a - 1)); } }
上面仍然有一个问题(factorial
需要static
,或者您需要创建一个实例来调用它),但它现在在正确的位置.