Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 递归除以3_Java_Recursion_Division - Fatal编程技术网

Java 递归除以3

Java 递归除以3,java,recursion,division,Java,Recursion,Division,使用递归,我试图将一个输入除以3,直到结果小于1 到目前为止,这是我所拥有的,但我的输出结果总是像1。我相信我知道我的错误在代码上的什么地方,但是我不知道应该使用什么输入,或者我的方法是否编码错误。我在我认为问题所在的地方放了一张便条,想知道是否有人能支持我,给我一个关于如何解决这个问题的提示 还有,如何结束循环 package divideby3; import java.util.Scanner; public class DivideBy3 { public static vo

使用递归,我试图将一个输入除以3,直到结果小于1

到目前为止,这是我所拥有的,但我的输出结果总是像
1
。我相信我知道我的错误在代码上的什么地方,但是我不知道应该使用什么输入,或者我的方法是否编码错误。我在我认为问题所在的地方放了一张便条,想知道是否有人能支持我,给我一个关于如何解决这个问题的提示

还有,如何结束循环

package divideby3;
import java.util.Scanner;

public class DivideBy3 {

    public static void main(String[] args) {
        System.out.print("Enter number >= 1:");
        int n = new Scanner(System.in).nextInt();
        System.out.println("\n Negative result is:" + n);

        for(int i = 1; i <= n; i++) {
            System.out.print(Recusion(i) + " ");
        }
    }

    public static double Recusion(double n) {
        if(n >= 1) {
            //not sure what to put here
            return ;
        }
        else {
            System.out.println("Sorry thats not number over 1!");
        }

        return Recusion(n / 3);
    }

    public static double Loop(double n) {
        if(n >= 1) {
            return 1;
        }

        double input = 0, divide = 3;
        for(double i = 0; i <= n; i++) {
            divide = (input / divide);
        }

        return divide; 
    }
}
packagedivideby3;
导入java.util.Scanner;
公共类划分3{
公共静态void main(字符串[]args){
系统输出打印(“输入编号>=1:”;
int n=新扫描仪(System.in).nextInt();
System.out.println(“\n负结果为:”+n);
对于(int i=1;i=1){
//不知道该在这里放什么
返回;
}
否则{
System.out.println(“对不起,这不是超过1的数字!”);
}
回归回归(n/3);
}
公共静态双环路(双n){
如果(n>=1){
返回1;
}
双输入=0,除法=3;

对于(double i=0;i来说,您似乎不理解递归的概念。深入了解它会有所帮助。简单地说,递归是一种函数递归调用自身直到满足条件的技术

下面是一个简单的例子,说明它是如何工作的

  public static void main(String[] args)
  {
    System.out.print(RecursiveDivision(100,3));
  }

  public static double RecursiveDivision(double dividend, int divisor) {
    if (dividend < 1)
      return dividend;

    return RecursiveDivision(dividend/divisor, divisor);
  }
publicstaticvoidmain(字符串[]args)
{
系统输出打印(递归分割(100,3));
}
公共静态双递归除法(双除法,整数除法){
如果(股息<1)
股息回报率;
返回递归除法(除数/除数,除数);
}

如前所述

     public static void main(String[] args)
      {
    //you decide the number at n

System.out.print(RecursiveDivision(n,3));
}

public static double RecursiveDivision(double dividend, int divisor) {
      if (dividend < 1)
      return dividend;

return RecursiveDivision(dividend/divisor, divisor);
}
publicstaticvoidmain(字符串[]args)
{
//你决定n的数字
系统输出打印(递归除法(n,3));
}
公共静态双递归除法(双除法,整数除法){
如果(股息<1)
股息回报率;
返回递归除法(除数/除数,除数);
}

You
Loop
方法的第一个条件也是错误的,因为如果它大于/等于1,你想让它除以。不过,循环本身有几个更严重的问题……你能给出一个输入和输出的例子吗?提供一个答案被否决的原因很有帮助。Gabe-非常确定这个网站90%的内容都是家庭作业问题-如果我做了我的工作,我在寻求帮助/提示,而不是答案…继续前进。技术-很明显,我可以尝试阅读更多内容,但有时如果有我的方向示例,而不是随机的书籍条目,我会做得更好。尽管如此,这个示例非常有用,谢谢。@Caramel先生太好了,如果答案是正确的,请将其标记为答案回答您的问题。请等待,以确保在标记之前我能找出答案。用户输入将打印出多少个“分割答案”将显示,而不是分割输入-所以我正在努力解决这个问题。一旦我没有进一步的问题,我会标记。@Caramel先生,你能举个例子或更新你的问题,以了解你的意思吗?我不太明白。