Java 尝试使用递归来寻找两个已知数字加在N上的可能性

Java 尝试使用递归来寻找两个已知数字加在N上的可能性,java,recursion,Java,Recursion,我有一个递归问题,我花了几个小时,但无法将我的一些想法转换成代码。我有一个问题,我需要构建一个函数,尝试将3和1放入给定的数字(n)中。我试图从用户那里得到n,但我不能再进一步了。基本上我需要计算3和1加起来等于n的可能性。我知道一个恒定的解是,我可以将1n次拟合成n 感谢您的帮助。提前谢谢 public static void main(String[] args) { // TODO code application logic here Scanner ask = new

我有一个递归问题,我花了几个小时,但无法将我的一些想法转换成代码。我有一个问题,我需要构建一个函数,尝试将3和1放入给定的数字(n)中。我试图从用户那里得到n,但我不能再进一步了。基本上我需要计算3和1加起来等于n的可能性。我知道一个恒定的解是,我可以将1n次拟合成n

感谢您的帮助。提前谢谢

public static void main(String[] args) {
    // TODO code application logic here

    Scanner ask = new Scanner(System.in);
    System.out.println("input number: ");
    int n = ask.nextInt(); 

}

public static int getPossibility(int n, int k, int p) {

    if (n == 0) {
        return 0;
    } else if (n / p == n ) {
        return n;
    } else {
        int ctr = n;
        for (int i = 1; i <= n; i++) {

            ctr += getPossibility(n, k - 1, p - 1) ;
        }
   return ctr;
    } 
}
publicstaticvoidmain(字符串[]args){
//此处的TODO代码应用程序逻辑
扫描器ask=新扫描器(System.in);
System.out.println(“输入编号:”);
int n=ask.nextInt();
}
公共静态int-getObability(int-n,int-k,int-p){
如果(n==0){
返回0;
}否则如果(n/p==n){
返回n;
}否则{
int ctr=n;

对于(int i=1;i我不确定您想做什么,但如果您想计算3s和1s与一个数字的匹配次数,您可以这样做:

int threes = n / 3;
int ones = n % threes * 3;

我不确定我是否理解你的意思。通过这段代码,你可以尝试计算出有多少组合是从1开始的,有多少组合是从3开始的。然后你只需要总结一下,就可以得到你的解决方案

public int possibilities (int n){
    int pos1=0;
    int pos3 =0;
    if (n>2){
        pos3 = possibilities(n-3);
    }
    if (n>0) {
        pos1 = possibilities(n-1);
    }
    return pos1 + pos3;
}

谢谢,这就是我的意思。我的英语不是最好的,所以我想这是因为我不能被理解。