【问题标题】:How to pass value to a method using object created in main class in Java如何使用在Java主类中创建的对象将值传递给方法
【发布时间】:2019-11-19 08:21:29
【问题描述】:

我正在准备一个使用递归和记忆的斐波那契数列程序,但我无法使用对象将值传递给该方法。谁能指出我的代码有什么问题

class fib_mem
{
  int f []=new int[10];
  int fibmem(int n)
  {
    if(n<1)
    {
      f[n]=n;
      return n;
    }
    else
    {
      if(f[n-2]==-1)
      {
        f[n-2]=fibmem(n-2);
      }
      if(f[n-1]==-1)
      {
        f[n-1]=fibmem(n-1);
      }
      f[n]=f[n-2]+f[n-1];
      return f[n-2]+f[n-1];
    }
  }
}
class abc
{
  public static void main(String[] args) {
  fib_mem obj=new fib_mem(5);
  int a=obj.fibmem();
  System.out.println(""+a);
  }
}

【问题讨论】:

  • new fib_mem(5) 你没有采用 int 的构造函数
  • 另外,你的代码有很多问题,特别是类和变量的命名

标签: java object recursion methods memoization


【解决方案1】:

对 abc 类使用以下代码:

class abc
{
  public static void main(String[] args) {
  // creating an object using constructor
  fib_mem obj=new fib_mem();

  // sending 5 as an argument to the method fib_mem
  int a=obj.fibmem(5);
  System.out.println(""+a);
  }
}

数字 5 应该像在方法中一样传递 - fib_mem(),但不是在构造函数中 - fib_mem obj=new fib_mem(5); 像你所做的那样。

【讨论】:

    【解决方案2】:

    这里有一些代码可以帮助您编写自己的递归。我认为这不需要内部类。试着给你的变量命名,这样你就可以通过它们的名字来弄清楚它们的作用。

    public class Main {
    
        static boolean stop = false;
        static int counter = 0;
    
        public static void main(String[] args) {
    
            System.out.print(0 + " ");
            System.out.print(1 + " ");
    
            printFiboRecursive(0,1);
        }
    
        static void printFiboRecursive(int a, int b){
    
            if(counter > 10){
                stop = true;
            }
    
            if(stop != true){
                System.out.print(a+b + " ");
                counter++;
                int para1 = b;
                int para2 = a+b;
                printFiboRecursive(para1,para2);
            }
        }
    }
    

    在这里,我为您创建了显示斐波那契序列的简单易读的代码。希望它可以帮助您创建自己的。类已被替换为静态方法,它不是递归的。

    public class Main {
    
        public static void main(String[] args) {
    
            printFibonacciSequence(5);
        }
    
        static void printFibonacciSequence(int amount){
            int a=0;
            int b=1;
            int temp=0;
    
            System.out.print(a + " ");
            System.out.print(b + " ");
    
            for(int i=0 ; i< (amount-2) ; i++){
                temp = a+b;
                System.out.print(temp + " ");
                a=b;
                b=temp;
            }
        }
    }
    

    输出将是:

    0 1 1 2 3 
    

    在 main 中更改方法的参数以获得更多数字。

    【讨论】:

      猜你喜欢
      • 2019-05-18
      • 1970-01-01
      • 1970-01-01
      • 2013-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-26
      相关资源
      最近更新 更多