有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java递归除以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; 
    }
}

共 (1) 个答案

  1. # 1 楼答案

    你似乎不理解递归的概念。好好读一读会有好处的。简单地说,递归是一种函数递归调用自身直到满足条件的技术

    下面是一个简单的例子

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