如何使用在Java主类中创建的对象将值传递给方法

问题描述 投票:0回答:2

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

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);
  }
}
java object recursion methods memoization
2个回答
0
投票
对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); } }

应该像在方法-fib_mem()中那样传递数字5,但不要像在您的构造方法-fib_mem obj=new fib_mem(5);中那样传递数字。

0
投票
这里有一些代码可以帮助您编写自己的递归。我认为不需要内部类。尝试命名变量,以便仅通过变量名就可以知道它们的作用。

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中方法的参数以获得更多数字。
© www.soinside.com 2019 - 2024. All rights reserved.