【问题标题】:Fibonacci procedure in Java, sequencingJava中的斐波那契过程,排序
【发布时间】:2014-05-25 21:04:12
【问题描述】:

我目前正在尝试解决这个关于斐波那契数列的问题。这是相当直接的,但我不知道我不能得到它。事先为我的无能道歉。

我当前的代码,我知道它完全错误,它甚至无法编译.. 我很迷茫,谁能给我解释一下

public static void fib(int n)
{
    int neW = 1;
    int next = 1;
    int old = neW - next;
    while (neW <= n)
    {
        neW = next + old;
        old = next;
        next = neW;
        System.out.println(neW);
    }

}

我当前的代码输出与正确的比较;

【问题讨论】:

  • 为什么在函数内输出值时返回 new ?
  • 啊,是的,不要介意我刚刚删除的新版本,我还有什么可以改变的吗?
  • 我会更新您的问题以反映您代码中的更改。您的输出左侧的代码似乎也从 1 而不是 0 开始。

标签: sequence procedure fibonacci bluej


【解决方案1】:

在进一步调查您的屏幕截图时,似乎调用函数 fib(n) 应该返回 n 个值,并且 达到该值。当我们知道这是一项任务时,我们不倾向于编写代码,但是您似乎错过了一些问题,并且您的代码几乎检查了...所以这是我的解决方案理论,但我不能保证它有效。

public static void fib(int b)
    {
    int n = 0;
    int neW = 1;
    int next = 1;
    int old = neW - next;
    while (n <= b)
    {
        System.out.println(neW);
        neW = next + old;
        old = next;
        next = neW;
        n++;
    }
}

类似的东西应该可以解决问题。

【讨论】:

  • 由于某些原因,除了多余的数字行和缺少的数字行之外,现在一切正常。 puu.sh/84BrV.png
  • 我已经更新了我的答案,将System.out.println(neW) 放在首位(这应该可以解决问题)但是,你就快到了,我不想让你陷入依赖的陷阱我们来完成你的任务:)。试试看,如果不起作用,我很乐意提供帮助。
  • 啊应该没问题,这也不是作业,更像是家庭作业。最近开始使用 for 语句,do while 和所有这些,但我不理解 for 的斐波那契概念。
  • for 语句非常简单,你传递给它一个 start、end 和 increment 值,所以实际上你是在说“从 a 开始,对于这个循环的每次迭代,递增b 直到您到达号码 c"。 for(a=0;a&lt;=c;a+b)
  • 斐波那契数列开始前的元素是...,-3,2,-1,1,0,1,1,2,3,5,...(参见模式?),因此您也可以尝试使用 1,0 初始化递归,以便第一个计算的数字是 1,1,2,3,...
【解决方案2】:

您的代码有几处让我感到困惑,但我会这样做:

public static void fib(int n)
{
    int current = 0;
    int old = 1;
    int new = 0;
    for(int i = 0; i < n; i = i+1)
    {
        new = current + old;
        old = current;
        current = new;
        System.out.println(current);
    }

}

【讨论】:

  • 啊,是的,这解决了问题,很好地澄清了我的理解,谢谢!!
  • 如果这有帮助,请给我打勾;)
猜你喜欢
  • 2010-12-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-11
  • 1970-01-01
  • 1970-01-01
  • 2015-08-30
  • 1970-01-01
相关资源
最近更新 更多