递归除以 3

Recursive dividing by 3

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

到目前为止,这是我所拥有的,但我的输出总是像 1 1 1 1 1 1 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; 
    }
}

看来你不明白递归的概念。仔细阅读它会很有帮助。简单地说,递归是一种函数递归调用自身直到满足条件的技术。

这是一个简单的例子来说明它是如何工作的。

  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);
  }

如前所述

     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);
}